如何从 python 中的嵌套字典中获取值?

How to get value from nested dictionary in python?

我写了一个函数,可以 return 几个字典。 例如:

def func()
    return c # <---- nested dictionary

if __name__ == "__main__":
    ans = func()
    print ans             

如果我打印答案:

{u'ok': 1.0, u'result': [{u'price': 129.7, u'_id': datetime.datetime(2015, 2, 23, 9, 32)}, {u'price': 129.78, u'_id': datetime.datetime(2015, 2, 23, 9, 33)},
print ans.get('_id')

如果我打印这个,结果是 None。 我怎样才能得到_id

您可以使用列表理解。

In [19]: ans = {u'ok': 1.0, u'result': [{u'price': 129.7, u'_id': datetime.datetime(2015, 2, 23, 9, 32)}, {u'price': 129.78, u'_id': datetime.datetime(2015, 2, 23, 9, 33)}]}
In [24]: [i['_id'] for i in ans['result']]
Out[24]: [datetime.datetime(2015, 2, 23, 9, 32), datetime.datetime(2015, 2, 23, 9, 33)]
In [25]: [i.get('_id') for i in ans['result']]
Out[25]: [datetime.datetime(2015, 2, 23, 9, 32), datetime.datetime(2015, 2, 23, 9, 33)]
for i in ans['result']:
    print i['_id']

从你的踪迹来看,c 似乎是一个包含各种其他字典的字典。

print ans["result"][0]["_id"]

应该return你想要的值。

func() 实际上返回一个 嵌套字典 。仔细看看你的印刷品告诉你什么。 所以 ans = func() 是一个嵌套字典:

{u'ok': 1.0, u'result': [{u'price': 129.7, u'_id': datetime.datetime(2015, 2, 23, 9, 32)}, {u'price': 129.78, u'_id': datetime.datetime(2015, 2, 23, 9, 33)},

因此 ans['result'] 本身就是另一个字典,或者显然是一个包含字典的列表。