如何从 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'] 本身就是另一个字典,或者显然是一个包含字典的列表。
我写了一个函数,可以 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'] 本身就是另一个字典,或者显然是一个包含字典的列表。