[英]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.