Python字典里面的字典列表
问题描述:
嗨我有下面的字典,它有一个列表的值,列表内是一个字典。有没有办法使用键而不是列表索引来调用列表中的字典值?列表中的字典可能会有所不同,因此索引值可能并不总是提供正确的键值对。但是如果我能够使用密钥,我总能得到正确的值。Python字典里面的字典列表
mylist = {'mydict': [{'A': 'Letter A'}, {'B': 'Letter C'}, {'C': 'Letter C'}]}
print(mylist['mydict'][0]['A'])
电流输出:
Letter A
所需的查询:
print(mylist['mydict']['A'])
Letter A
答
目前你有一本字典里的列表里3个字典。试试下面的不是:
mylist = {'mydict': {'A': 'Letter A', 'B': 'Letter C', 'C': 'Letter C'}}
print(mylist['mydict']['A'])
答
如果原始数据被格式化,因为这是唯一可行的:
mylist = {'mydict': {'A': 'Letter A','B': 'Letter C','C': 'Letter C'}}
所以没有嵌入列表 - 这似乎并不仍要添加有意义的结构?
答
在下面的代码看看:
>>> mylist = {'mydict': [{'A': 'Letter A'}, {'B': 'Letter C'}, {'C': 'Letter C'}]}
>>> for dictionary in mylist['mydict']:
... try:
... dictionary['A']
... except KeyError:
... pass
...
'Letter A'
您遍历列表内的字典,然后试着打电话给你A
关键。你赶上KeyError
,因为在字典中可能不存在键。
答
请尝试下面的代码来生成新的字典。
mylist = {'mydict': [{'A': 'Letter A'}, {'B': 'Letter C'}, {'C': 'Letter C'}]}
newDict={}
for item in mylist['mydict']:
newDict.update(item)
mylist['mydict']=newDict
print(mylist['mydict']['A'])
答
如何使用一台发电机?
item = next(item['A'] for item in mylist['mydict'] if 'A' in item)
为什么不只是使用字典的字典呢? – bphi
如果不更改对象的结构,则无法更改所需查询的结果。对于当前结构,查询将始终引发错误。 –
看起来你应该为'mydicts = {k:dict(v)for k,v in mylist.items()}'然后你得到可以用作'mydicts ['mydict'] ['A']' –