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 
+0

为什么不只是使用字典的字典呢? – bphi

+1

如果不更改对象的结构,则无法更改所需查询的结果。对于当前结构,查询将始终引发错误。 –

+1

看起来你应该为'mydicts = {k:dict(v)for k,v in mylist.items()}'然后你得到可以用作'mydicts ['mydict'] ['A']' –

目前你有一本字典里的列表里3个字典。试试下面的不是:

mylist = {'mydict': {'A': 'Letter A', 'B': 'Letter C', 'C': 'Letter C'}} 
print(mylist['mydict']['A']) 
+0

我通过数据循环创建并使用.append({key:value})来创建带有字典的列表。让我看看我是否可以像这样格式化它。这有助于感谢。 – MBasith

+0

在这种情况下,您可以初始化'mylist = {'mydict':{}}'并在'key'和'value'处使用'for'循环,并使用mylist ['mydict'] [key] = value' – Andras

+0

那就是诀窍。非常感谢你! – MBasith

如果原始数据被格式化,因为这是唯一可行的:

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)