[英]How to put JSON values into a list Python
我有一個看起來像這樣的json列表:
{
"callback": [{
"id": "R_puFk4fZ8m1lE4bD",
"set": "Default Response Set",
"ace": "asdf",
"date": "asdfdsa",
"1": "asdf",
"2": "s",
"3": "3",
"4": "1",
"zone": "0",
"long": "33.564498901367",
"lat": "-112.00869750977"
}
]
}
我的實際數據在列表中有很多json對象,我想知道如何將json中的“ date”和“ zone”之間的數字放在單獨的列表中。 這些數字在json對象之間有所不同,但始終在“ date”和“ zone”值之間。
我將如何將其轉換為:
{
"callback": [{
"id": "R_puFk4fZ8m1lE4bD",
"set": "Default Response Set",
"ace": "asdf",
"date": "asdfdsa",
"Q": [
"1": "asdf",
"2": "s",
"3": "3",
"4": "1"
],
"zone": "0",
"long": "33.564498901367",
"lat": "-112.00869750977"
}
]
}
您可以通過集合成員資格對其進行分類(如PM 2Ring所述,集合成員身份的速度更快O(1)):
def group_questions(source_dct):
meta_tags = {"id", "set", "ace", "date", "zone", "long", "lat"}
result_dct = {"Q": {}}
for key in source_dct:
if key not in meta_tags:
result_dct["Q"][key] = source_dct[key]
else:
result_dct[key] = source_dct[key]
return result_dct
結果(注釋字典未排序):
>>> print group_questions(dct)
{'set': 'Default Response Set',
'ace': 'asdf',
'zone': '0',
'long': '33.564498901367',
'Q': {'1': 'asdf',
'3': '3',
'2': 's',
'4': '1'},
'lat': '-112.00869750977',
'date': 'asdfdsa',
'id': 'R_puFk4fZ8m1lE4bD'}
使用內置的int()
函數檢查整數鍵:
new_list = []
for old_data in old_list: #old_list is the value of 'callback' key
data = {'Q': {}}
for key in old_data.keys():
try:
num = int(key)
data['Q'][key] = old_data[key]
except ValueError: # stringy keys
data[key] = old_data[key]
new_list.append(data)
現在,使用json.dumps()
類的json.dumps()
打印new_list
會得到類似以下內容:
[
{
"Q": {
"1": "asdf",
"2": "s",
"3": "3",
"4": "1"
},
"id": "R_puFk4fZ8m1lE4bD",
"set": "Default Response Set",
"ace": "asdf",
"date": "asdfdsa",
"zone": "0",
"long": "33.564498901367",
"lat": "-112.00869750977"
}
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.