在Python中从json获取多个键
我在文件中有以下json结构:在Python中从json获取多个键,python,json,python-2.7,Python,Json,Python 2.7,我在文件中有以下json结构: [ { "Date": "timevalue", "Org": "b4256282", "Referer": "somevalue" }, { "Date": "timevalue", "Org": "b4257482", "Referer": "somevalue" }, { "Date": "timevalue", "Org": "b4253345", "Referer": "somevalue" }, .... ] 我想提取所有的组织 我的代码是: imp
[
{ "Date": "timevalue", "Org": "b4256282", "Referer": "somevalue" },
{ "Date": "timevalue", "Org": "b4257482", "Referer": "somevalue" },
{ "Date": "timevalue", "Org": "b4253345", "Referer": "somevalue" },
....
]
我想提取所有的组织
我的代码是:
import json
jdata = json.loads(str_of_above_json)
for orgs in jdata['Org']:
print(orgs)
但是,此代码不起作用。。。我得到以下错误消息
TypeError:列表索引必须是整数,而不是str
有人能告诉我我做错了什么吗
import json
jdata = json.loads(str_of_above_json)
for orgs in jdata:
print(orgs["Org"])
您需要迭代列表[]
然后打印每个数据的“组织”部分
您需要迭代列表[]
然后打印每个数据的“组织”部分。您需要迭代列表中的每个字典,然后依次使用dict索引对dict进行索引。对于列表中的每一本词典
Org
关联的值for dict_ in jdata:
org = dict_['Org']
print(org)
然而,我们拥有列表理解的能力,因此上面的代码可以更简洁地表示为
jdata = json.loads(str_of_above_json)
orgs = [x['Org'] for x in jdata]
print(orgs)
为什么当前代码不工作?您可以使用
jdata['Org']
,但是[…]
是一个dict索引操作,这将引发错误,因为jdata
是一个列表 您需要迭代列表中的每个字典,然后依次使用dict索引为dict编制索引。对于列表中的每一本词典
Org
关联的值for dict_ in jdata:
org = dict_['Org']
print(org)
然而,我们拥有列表理解的能力,因此上面的代码可以更简洁地表示为
jdata = json.loads(str_of_above_json)
orgs = [x['Org'] for x in jdata]
print(orgs)
为什么当前代码不工作?您可以使用
jdata['Org']
,但是[…]
是一个dict索引操作,这将引发错误,因为jdata
是一个列表 记住,数据一旦作为Python结构加载,就会成为一个字典列表。为了简单起见,它只是:
[{...}, {...}, {...}]
关键字这里是一个列表。因此,for循环将/应该迭代一个列表,在每次迭代中为您提供每个字典
此时,您可以访问“Org”键
所以当你这样做的时候:
for orgs in jdata:
print(orgs) # each dictionary
此时,您可以访问字典中的Org
键:
for orgs in jdata:
print(orgs) # each dictionary
print(orgs['Org']) # The value of 'Org' in each dictionary
请记住,数据一旦作为Python结构加载,将成为一个字典列表。为了简单起见,它只是:
[{...}, {...}, {...}]
关键字这里是一个列表。因此,for循环将/应该迭代一个列表,在每次迭代中为您提供每个字典
此时,您可以访问“Org”键
所以当你这样做的时候:
for orgs in jdata:
print(orgs) # each dictionary
此时,您可以访问字典中的Org
键:
for orgs in jdata:
print(orgs) # each dictionary
print(orgs['Org']) # The value of 'Org' in each dictionary
所有其他答案都是正确的,将解决您当前的问题 但是,如果您对这样的结构进行大量操作,您可能会发现该包很有用(完全公开:我是该包的作者) 例如(假设您的
jdata
已加载):
或:
所有其他答案都是正确的,将解决您当前的问题 但是,如果您对这样的结构进行大量操作,您可能会发现该包很有用(完全公开:我是该包的作者) 例如(假设您的
jdata
已加载):
或:
对于jdata中的orgs:print(orgs['Org'])
记住,一旦作为Python结构加载,您的数据将成为一个字典列表。关键字这里是一个列表。因此,for循环只是在一个列表上进行迭代,然后每个orgs
都将是字典,您可以访问'Org'键。对于jdata:print(orgs['Org]])
记住,作为Python结构加载的数据将是一个字典列表。关键字这里是一个列表。因此,您的for循环将在一个列表上迭代,然后每个orgs
将成为字典,然后您可以访问“Org”键。