我有一個如下所示的 JSON 檔案:
"153689763780624385": {
"1": {
"author": "Mike",
"date": "05/06/2022, 12:00:57"
},
"2": {
"author": "Mike",
"date": "05/06/2022, 13:29:43"
},
"3": {
"author": "Jan01p",
"date": "05/7/2022, 16:01:22"
}
}
我正在做的是訪問我的 JSON,并洗掉 json 檔案中的第二個物件鍵。使用以下代碼。
with open("pins.json", "r ") as f:
p = json.load(f)
gid = "153689763780624385"
del p[gid]["2"]
with open("pins.json", "w ") as fp:
json.dump(p, fp, indent=4)
現在我的 JSON 看起來像這樣
"153689763780624385": {
"1": {
"author": "Mike",
"date": "05/06/2022, 12:00:57"
}
"3": {
"author": "Jan01p",
"date": "05/7/2022, 16:01:22"
}
}
我的目標是使用某種回圈將以下所有鍵重命名為按順序排列。所以3改為2. 名稱等4。3JSON 要大得多,只是為了詢問目的而縮短了它。重命名鍵以遞增順序的好方法是什么?到目前為止,我正在考慮 dict.pop 在 for 回圈中。但是想不通。
uj5u.com熱心網友回復:
您可以使用以下邏輯對所有鍵重新排序。
my_dict1 = {"1": "a", "3": "b", "4": "c", "5": "d"}
my_dict2 = {str(i 1):v for i, v in enumerate(my_dict1.values())}
print(my_dict2)
# {'1': 'a', '2': 'b', '3': 'c', '4': 'd'}
此解決方案只能用于 Python 3.7 及更高版本,因為此版本之前的字典是無序的。如果您想按日期訂購它們。
uj5u.com熱心網友回復:
假設您的鍵都是字串形式的數字,而您只想讓它們休息 1. 使用該dict.pop()方法:
value_to_remove = 2
with open("pins.json", "r ") as f:
p = json.load(f)
gid = "153689763780624385"
del p[gid][str(value_to_remove)]
for key, values in p[gid].items():
if int(key) > value_to_remove:
p[gid][str(int(key)-1)] = p[gid].pop(str(key))
with open("pins.json", "w ") as fp:
json.dump(p, fp, indent=4)
如果保存的鍵值gid是唯一要洗掉的"2"鍵值。然后就可以了。如果你想為每個“第一個鍵”實作這個,你可以遍歷 json 字典中的每個第一個鍵。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/479273.html
