您可以压缩字典:
for k, k2 in zip(price,inventory):
print(price[k]*inventory[k2])
即使您的代码有效,您也将访问键而不是值,因此您将需要使用上述每个键来访问dict值.
如果您使用的是python2,则可以使用itertools.izip:
from itertools import izip
for k, k2 in izip(price,inventory):
print(price[k],inventory[k2])
由于字典是无序的,因此您需要使用orderedDict来确保键匹配.
如果两个字典都具有相同的键,则更简单的解决方案是使用一个字典中的键从两个字典中获取值.
for k in price:
print(price[k]*inventory[k])
可以写成:
total = sum(price[k]*inventory[k]for k in price)
如果您控制如何创建字典,将两个字典合并为一个字典,则使用价格和库存作为键来存储字典,这将是更好的整体解决方案.
shop_items = {'orange': {'price': 1.5, 'inventory': 32}, 'pear': {'price': 3, 'inventory': 15}, 'banana': {'price': 4, 'inventory': 6}, 'apple': {'price': 2, 'inventory': 0}}
然后得到总数:
print(sum(d["price"] * d["inventory"] for d in shop_items.itervalues()))
或打印所有可用项目:
for k, val in shop_items.iteritems():
pri,inv = val["price"],val["inventory"]
print("We have {} {}'s available at a price of ${} per unit".format(inv,k,pri))
We have 32 orange's available at a price of $1.5 per unit
We have 15 pear's available at a price of $3 per unit
We have 6 banana's available at a price of $4 per unit
We have 0 apple's available at a price of $2 per unit
如果您要花钱,则应该使用decimal库.