我有一个任意数量的等长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']}
答案 0 :(得分:1)
使用以下方法:
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']}
答案 1 :(得分: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']
}