如何从包含多个词典

时间:2017-06-15 06:38:48

标签: python python-3.x dictionary

我的输入是这样的:

{car:10,bus:100, lorry:12,truck:89}
{car :12,bus:19,lorry:1,truck:90}
{car:14,bus:22,lorry:44,truck:0}

我想在上面的所有字典中打印每个键的最大值,如下所示:

{car:14,bus:100,lorry:44,truck:90}

3 个答案:

答案 0 :(得分:3)

您可以使用chain模块中的groupbyitertools以及此示例中的comprehension

from itertools import chain, groupby

a = [{'bus': 100, 'car': 10, 'lorry': 12, 'truck': 89},
 {'bus': 19, 'car': 12, 'lorry': 1, 'truck': 90},
 {'bus': 22, 'car': 14, 'lorry': 44, 'truck': 0}]

b = chain.from_iterable(k.items() for k in a)
final = dict(max(list(v), key=lambda x: x[1]) for _, v in groupby(sorted(b, key=lambda x:x[0]), lambda x: x[0]))

print(final)

输出:

{'bus': 100, 'car': 14, 'lorry': 44, 'truck': 90}

答案 1 :(得分:2)

result = {}
for(key,val), (key,val2),(key,val3) in zip(l[0].items(), l[1].items(), l[2].items()):
    result[key] = max(val,val2,val3)

你会得到:

>>> result
{'lorry': 44, 'bus': 100, 'car': 14, 'truck': 90}

答案 2 :(得分:0)

试试这个:

d = {'a':5, 'b':6, 'c': 3}
d2 = {'a':6, 'b':7, 'c': 3}
d3 = {'a':7, 'b':1, 'c': 5}

new_dict = {}
for(k,v), (k,v2),(k,v3) in zip(d.items(), d2.items(), d3.items()):
    new_dict[k] = max(v,v2,v3)

输出:

new_dict= {'a': 7, 'b': 7, 'c': 5}