2017-05-28 64 views
-1

我具有相等长度的Python字典的任意数量的具有匹配的密钥组,其是列表,这样的列表:总和蟒字典内的一个对应的列表元素

[{'Item 1':[5.25, 'Red', 'Large'], 'Item 2':[8.50, 'Blue', 'Small'], 'Item 3':[12.50, 'Tan', 'Medium']}, 
{'Item 1':[10.50, 'Red', 'Large'], 'Item 2':[14.25, 'Blue', 'Small'], 'Item 3':[17.25, 'Tan', 'Medium']}, 
{'Item 1':[12.25, 'Red', 'Large'], 'Item 2':[20.25, 'Blue', 'Small'], 'Item 3':[24.25, 'Tan', 'Medium']}] 

用于每个属性的列表产品是相同的,除了第一个项目,一个int或float。

如何获得具有相同组键和相同组值的单个字典,但列表中的第一项是相加的?换句话说,我想回到:

{'Item 1':[28.00, 'Red', 'Large'], 'Item 2':[43.00, 'Blue', 'Small'], 'Item 3':[54.00, 'Tan', 'Medium']} 

回答

1

下工作,如果输入的是你的状态:

> lst = [ 
    {'Item 1':[5.25, 'Red', 'Large'], 'Item 2':[8.50, 'Blue', 'Small'], 'Item 3':[12.50, 'Tan', 'Medium']}, 
    {'Item 1':[10.50, 'Red', 'Large'], 'Item 2':[14.25, 'Blue', 'Small'], 'Item 3':[17.25, 'Tan', 'Medium']}, 
    {'Item 1':[12.25, 'Red', 'Large'], 'Item 2':[20.25, 'Blue', 'Small'], 'Item 3':[24.25, 'Tan', 'Medium']} 
] 

> {k: [sum(d[k][0] for d in lst)] + lst[0][k][1:] for k in lst[0]} 
{ 
    'Item 3': [54.0, 'Tan', 'Medium'], 
    'Item 2': [43.0, 'Blue', 'Small'], 
    'Item 1': [28.0, 'Red', 'Large'] 
} 
+0

完美的作品!感谢您的时间。 –

0

用下面的办法:

result = {k: [sum(d[k][0] for d in price_list)] + v[1:] for k,v in price_list[0].items()} 

print(result) 

输出:

{'Item 1': [28.0, 'Red', 'Large'], 'Item 3': [54.0, 'Tan', 'Medium'], 'Item 2': [43.0, 'Blue', 'Small']} 
相关问题