python如何实现子列表内的元素求和

有一个列表如下:
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]