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

时间:2015-03-15 08:14:54

标签: python dictionary nested

我写了一个函数,它将返回几个字典。 例如:

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

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

如果我打印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')

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

4 个答案:

答案 0 :(得分:2)

您可以使用列表理解。

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)]

答案 1 :(得分:0)

for i in ans['result']:
    print i['_id']

答案 2 :(得分:0)

从查看跟踪看来,c似乎是包含各种其他字典的字典。

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

应该返回你想要的值。

答案 3 :(得分:0)

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)},

因此,[&#39;结果&#39;]本身就是另一个词典,或者显然是一个包含词典的列表。