use*_*823 4 python dictionary list
如果我有:
dicts = [{'a': 4,'b': 7,'c': 9},
{'a': 2,'b': 1,'c': 10},
{'a': 11,'b': 3,'c': 2}]
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得最大键,如下所示:
{'a': 11,'c': 10,'b': 7}
Run Code Online (Sandbox Code Playgroud)
改为使用collection.Counter()
对象,或转换字典:
from collections import Counter
result = Counter()
for d in dicts:
result |= Counter(d)
Run Code Online (Sandbox Code Playgroud)
甚至:
from collections import Counter
from operator import or_
result = reduce(or_, map(Counter, dicts), Counter())
Run Code Online (Sandbox Code Playgroud)
Counter
对象支持通过|
操作本机查找每个键的最大值; &
给你最小的.
演示:
>>> result = Counter()
>>> for d in dicts:
... result |= Counter(d)
...
>>> result
Counter({'a': 11, 'c': 10, 'b': 7})
Run Code Online (Sandbox Code Playgroud)
或使用reduce()
版本:
>>> reduce(or_, map(Counter, dicts), Counter())
Counter({'a': 11, 'c': 10, 'b': 7})
Run Code Online (Sandbox Code Playgroud)
>>> dicts = [{'a': 4,'b': 7,'c': 9},
... {'a': 2,'b': 1,'c': 10},
... {'a': 11,'b': 3,'c': 2}]
>>> {letter: max(d[letter] for d in dicts) for letter in dicts[0]}
{'a': 11, 'c': 10, 'b': 7}
Run Code Online (Sandbox Code Playgroud)