我正在寻找有关此问题的更多信息。到目前为止,我已经检查了JSON编码/解码,但这并不是我想要的。
我正在寻找一种方法来轻松删除这种列表:
//response
{
"age":[
{"#":"1","age":10},
{"#":"2","age":12},
{"#":"3","age":16},
{"#":"4","age":3}
],
"age2":[
{"#":"1","age":10},
{"#":"2","age":12},
{"#":"3","age":16},
{"#":"4","age":3}
],
"days_month":31,
"year":2017
}
那么如何轻松提取数据呢?即我希望age2
中#
= {3>的人的结果年龄。
要获得年/日_月的结果,我找到了google的解决方案:
j=json.loads(r.content)
print(j['year'])
检索数据。可能我在互联网上遗漏了某些东西,但我找不到这种情况的具体解决方案。
答案 0 :(得分:0)
我认为这是@ Jean-FrançoisFabre试图表明的:
import json
response = """
{
"age":[
{"#":"1","age":10},
{"#":"2","age":12},
{"#":"3","age":16},
{"#":"4","age":3}
],
"age2":[
{"#":"1","age":10},
{"#":"2","age":12},
{"#":"3","age":16},
{"#":"4","age":3}
],
"days_month":31,
"year":2017
}
"""
j = json.loads(response)
# note that the [2] means the third element in the "age2" list-of-dicts
print(j['age2'][2]['#']) # -> 3
print(j['age2'][2]['age']) # -> 16
json.loads()
将JSON格式的字符串转换为Python对象。特别是它将JSON对象转换为Python字典,将JSON列表转换为Python list
对象。这意味着在这种情况下,您可以访问存储在变量j
中的结果的内容,就像它是一个或多个这些类型的Python数据类型的原生混合一样(并且看起来非常类似于回复中显示的是什么。
答案 1 :(得分:0)
由于您要查找的搜索条件未包含在相应数据结构的索引中,因此我将使用列表解析来执行此操作。对于您的示例,这将是
[person['age'] for person in j['age2'] if person['#'] == u'3'][0]
这将遍历“age2”下列表中的所有项目,并将数字为“3”的所有项目放入列表中。 [0]选择列表的第一个条目。
然而,这是非常低效的。如果您有大型数据集,可能需要查看pandas:
df = pandas.DataFrame(j['age2'])
df[df['#'] == '3']['age']
只要您的数据可以用一系列的系列或表格来表示,它就会更高效。