gpt4 book ai didi

python - 两个不同字典之间的乘法

转载 作者:行者123 更新时间:2023-12-04 09:30:09 24 4
gpt4 key购买 nike

我正在尝试在两个字典之间进行乘法运算:

quantita_materiale={'140cm* 2cm': [1.0]}
prezzo_materiale={'140cm* 2cm': [100.0], '70cm* 2cm': [100.0],}
我想要一个 result变量作为两个字典之间匹配的所有键的乘法。
我试图获得以下代码:
result={k : v * prezzo_materiale[k] for k, v in quantita_materiale.items() if k in prezzo_materiale}
但是python给了我以下错误:
can't multiply sequence by non-int of type 'list'

最佳答案

您正在尝试使用带有列表的字符串。那肯定会产生运行时错误。你应该这样做 -

quantita_materiale={'140cm* 2cm': [1.0]}
prezzo_materiale={'140cm* 2cm': [100.0], '70cm* 2cm': [100.0],}

result={k : v[0] * int(prezzo_materiale[k][0]) for k, v in quantita_materiale.items() if k in prezzo_materiale}

print(result)
print("total - ",total)
输出:
{'140cm* 2cm': 100.0}
total - 100.0

仅当您的值在列表中只有 1 个元素时,上述方法才有效。但是,如果您希望它适用于具有多个元素的列表的值,则可以使用以下代码 -
quantita_materiale={'140cm* 2cm': [1.0,2.0]}
prezzo_materiale={'140cm* 2cm': [100.0,200.0], '70cm* 2cm': [100.0],}

result ={}
for k in quantita_materiale.keys():
if k in prezzo_materiale:
result[k] = [v1*v2 for v1,v2 in zip(quantita_materiale[k],prezzo_materiale[k])]

print(result)
total = sum(sum(result.values(),[]))
print("total",total)
输出:
{'140cm* 2cm': [100.0, 400.0]}
total 500.0
请注意:
如果输入具有列表中具有多个元素的键的任何值,则答案的第一个版本将不起作用。因此,我的答案的第二个版本也适用于以下输入 -
输入:
quantita_materiale={'140cm* 2cm': [1.0,2.0],'70cm* 2cm':[5.0]}
prezzo_materiale={'140cm* 2cm': [100.0,200.0], '70cm* 2cm': [100.0]}
输出:
{'140cm* 2cm': [100.0, 400.0], '70cm* 2cm': [500.0]}
total 1000.0

关于python - 两个不同字典之间的乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62880888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com