有一个列表如下:
e = [[('a', 8), ('b', 10), ('c', 2)],
[('a', 4), ('c', 5)],
[('a', 4), ('b', 10), ('d', 1)]]
子列表中的数字代表个数,字符串代表物品,物品的价格存放在字典如:
price = {'a':2, 'b': 1, 'c': 3,'d':4}
想计算出每个子列表中元素的和,比如第一个子列表中想要的结果是 2乘8+1乘10+2✖️3
请问要如何实现呢
e = [[('a', 8), ('b', 10), ('c', 2)], [('a', 4), ('c', 5)], [('a', 4), ('b', 10), ('d', 1)]]
price = {'a': 2, 'b': 1, 'c': 3, 'd': 4}
for x in e:
sum = 0
for temp in x:
sum += price[temp[0]] * temp[1]
print(sum)
e = [[('a', 8), ('b', 10), ('c', 2)],
[('a', 4), ('c', 5)],
[('a', 4), ('b', 10), ('d', 1)]]
price = {'a':2, 'b': 1, 'c': 3,'d':4}
ans=[]
for i in e:
temp=[]
x=dict(i)
for j in x.keys():
temp.append(price[j]*x[j])
ans.append(tuple(temp))
print(ans)
def main():
e = [[('a', 8), ('b', 10), ('c', 2)], [('a', 4), ('c', 5)], [('a', 4), ('b', 10), ('d', 1)]]
price = {'a':2, 'b': 1, 'c': 3,'d':4}
ans=[]
for i in e:
sum=0
for j, n in i:
sum += price[j]*n
ans.append(sum)
print(ans)
if __name__ == '__main__':
main()
from functools import reduce
e = [[('a', 8), ('b', 10), ('c', 2)], [('a', 4), ('c', 5)], [('a', 4), ('b', 10), ('d', 1)]]
price = {'a':2, 'b': 1, 'c': 3,'d':4}
[reduce(lambda x,y:x+price[y[0]]*y[1], item, 0) for item in e]
[32, 23, 22]