基于python key的查找字典

Tru*_*ran 2 python dictionary list

我有一个格式为的字典列表:

mylist1 = [{'model': 'one'}, {'color': 'blue'}, {'age': 23}]

有没有办法可以根据字典的键查找字典?对于我想做的事情(伪代码):

mylist1['model'] #should return {'model': 'one'}

我不这样做的原因mylist[0]['model']是因为列表元素并不总是按这个顺序。

cs9*_*s95 5

折叠你的字典。

d = {k : v for d in mylist1 for k, v in d.items()}

d
{'age': 23, 'color': 'blue', 'model': 'one'}
Run Code Online (Sandbox Code Playgroud)

现在,只需查找常数O(1)时间即可。

d['model']
'one'
Run Code Online (Sandbox Code Playgroud)

通过在同一个列表中保留多个不相交的dicts,您首先就违背了它们的目的。


如果您有多个具有相同键的可能值,请使用 a dictof lists。

d = {}
for dct in mylist1:
    for k, v in dct.items():
        d.setdefault(k, []).append(v)

d
{'age': [23], 'color': ['blue'], 'model': ['one']}
Run Code Online (Sandbox Code Playgroud)

支持具有相同键的多个值,而不会像前一个那样覆盖条目。

  • @KaushikNP 我在这种情况下提到OP应该使用列表字典或一些嵌套结构。 (2认同)