在Python中从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

我在文件中有以下json结构:

[
{ "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进行索引。对于列表中的每一本词典

  • 找到第i本字典
  • 获取与第i个字典中的
    Org
    关联的值
  • 打印(2)中的所述值
  • 在代码中,这是

    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编制索引。对于列表中的每一本词典

  • 找到第i本字典
  • 获取与第i个字典中的
    Org
    关联的值
  • 打印(2)中的所述值
  • 在代码中,这是

    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”键。