Python 如何解析这个JSON dict来打印一个键、值对?

Python 如何解析这个JSON dict来打印一个键、值对?,python,json,dictionary,Python,Json,Dictionary,我想从数据字典中提取“id”:“117964025492630” 我尝试使用for循环,如: cow = { "data": [ { "id": "1179640025492630", "indicator": "google-analytics|UA-97996598-1", "type": "API_KEY" }, { "id": "1469

我想从数据字典中提取“id”:“117964025492630”

我尝试使用for循环,如:

cow = {
    "data": [
        {
            "id": "1179640025492630",
            "indicator": "google-analytics|UA-97996598-1",
            "type": "API_KEY"
        },
        {
            "id": "1469013519830038",
            "indicator": "google-analytics|UA-96613605-2",
            "type": "API_KEY"
        },
        {
            "id": "1459958767410551",
            "indicator": "google-analytics|UA-86399386-2",
            "type": "API_KEY"
        },
        {
            "id": "1507839102569000",
            "indicator": "google-analytics|UA-89570367-2",
            "type": "API_KEY"
        },
        {
            "id": "1276736575767341",
            "indicator": "google-analytics|UA-69774312-4",
            "type": "API_KEY"
        },
        {
            "id": "1292251910882451",
            "indicator": "google-analytics|UA-93952538-3",
            "type": "API_KEY"
        }
    ],
    "paging": {
        "cursors": {
            "after": "NQZDZD",
            "before": "MAZDZD"
        }
    }
}
它给我一个值错误,如:

回溯(最近一次呼叫最后一次):
文件“/dict.py”,第14行,在
对于键,['data']中的值:
ValueError:要解压缩的值太多
如果我使用
.iteritems
我会得到一个
属性错误

回溯(最近一次呼叫最后一次):
文件“/dict.py”,第14行,在
对于键,['data']中的值。iteritems:
AttributeError:“list”对象没有属性“iteritems”

如果您想要一个更干净的解决方案,使用嵌套的
进行
循环,您可以使用python的
map
函数来迭代
数据中的所有字典,并且只取
id

for i in cow['data']:
    for key,value in i:
        if(i == 'id'):
            print key,value
        else:
            pass

如果您想要一个更干净的解决方案,即使用嵌套的
来执行
循环,那么可以使用python的
map
函数来迭代
数据中的所有字典,并且只获取
id

for i in cow['data']:
    for key,value in i:
        if(i == 'id'):
            print key,value
        else:
            pass

如果要删除id字段,请使用映射函数:

>>> list(map(lambda d: 'id: {}'.format(d['id']), cow['data']))
['id: 1179640025492630', 'id: 1469013519830038', 'id: 1459958767410551', 'id: 1507839102569000', 'id: 1276736575767341', 'id: 1292251910882451']

您将得到一个元组列表(请注意,py3映射是惰性的,您将强制计算列表)。

如果您想删除id字段,请使用映射函数:

>>> list(map(lambda d: 'id: {}'.format(d['id']), cow['data']))
['id: 1179640025492630', 'id: 1469013519830038', 'id: 1459958767410551', 'id: 1507839102569000', 'id: 1276736575767341', 'id: 1292251910882451']
您将得到一个元组列表(请注意py3映射是惰性的,您将强制计算列表)。

或者您可以合并和理解,这可能更容易处理

map(lambda item: ("id", item["id"]), cow["data"])
给你

[{'id':'117964025492630'},{'id':'1469013519830038'},{'id':'1459958767410551'},{'id':'1507839102569000'},{'id':'12767365767341'},{'id':'129225191082451'}]

您可以这样打印出来:

result = [{k:v for k,v in dikt.items() if k == "id"} for dikt in cow['data']]
或者,你可以结合和理解,这可能更容易处理沿线

map(lambda item: ("id", item["id"]), cow["data"])
给你

[{'id':'117964025492630'},{'id':'1469013519830038'},{'id':'1459958767410551'},{'id':'1507839102569000'},{'id':'12767365767341'},{'id':'129225191082451'}]

您可以这样打印出来:

result = [{k:v for k,v in dikt.items() if k == "id"} for dikt in cow['data']]

如果您只想打印与
id
s关联的所有值:

print "\n".join([i['id'] for i in result])
输出:

<代码>11796402549630 1469013519830038 1459958767410551 1507839102569000 1276736575767341 1292251910882451
如果您只想打印与
id
s关联的所有值:

print "\n".join([i['id'] for i in result])
输出:

1179640025492630
1469013519830038
1459958767410551
1507839102569000
1276736575767341
1292251910882451

您的错误消息不是来自您发布的代码。错误消息显示您正在调用
['stuff'].iteritems
,它不在您发布的代码中,并且语义不正确。更新一个或另一个。
对于键,如果
i
是字典,则输入i.items()中的值。否则你只能拿到钥匙。你说的“提取”是什么意思?@martineau我想打印出id。@annmarie124:对不起,如果你想打印,那就打印(“11796402549263”)
。你的错误消息不是来自你发布的代码。错误消息显示您正在调用
['stuff'].iteritems
,它不在您发布的代码中,并且语义不正确。更新一个或另一个。
对于键,如果
i
是字典,则输入i.items()中的值。否则你只能拿到钥匙。你说的“提取”是什么意思?@martineau我想打印出身份证。@annmarie124:对不起,这没什么意义,如果你想打印的话。