刚开始学习python3,就遇到了字典。教程问题询问以下内容:
创建一个名为 weight 的字典,使用以下值进行初始化: "铅笔":10 "笔":20 "纸":4 "橡皮擦":80
创建另一个名为 available 的字典,使用以下值进行初始化: "笔":3 "铅笔":5 "橡皮擦":2 "纸":10
这是我遇到困难的地方:
编写代码来确定所有可用项目的总重量(即所有钢笔、铅笔、纸和橡皮擦的总重量是多少?
我需要使用 for 循环来循环键来执行此操作。
为了练习获取总和,我首先获取每个字典的总和:
`weight = {"pencil": 10, "pen": 20, "paper": 4, "eraser": 80}
print("Overall weight: ", (sum(weight.values())))
available = {"pen": 3, "pencil": 5, "eraser": 2, "paper": 10}
print("Available items: ", (sum(available.values())))`
这给了我每个输出为: 总重量:每件物品总重量114 #the 可用物品:20 #the 物品总数
这并不能真正帮助我回答这个问题,因为将这些值相乘会得到错误的答案。
这就是我到目前为止得到的,但我真的不知道如何使用 for 循环,所以不断收到错误:
`weight = {"pencil": 10, "pen": 20, "paper": 4, "eraser": 80}
available = {"pencil": 5,"pen": 3, "paper": 10, "eraser": 2}
overall_weight = 0
# missing for loop here
print("Overall weight: ", overall_weight)`
是这样的吗?
`for key in weight.keys() & available.keys():
print(weight.items()) * (available.items())
#missing a line here
return overall_weight`
手动,我可以看到总重量应该是310。 (5*10)+(3*20)+(10*4)+(2*80) = 310
我知道答案可能很简单,但真的没有弄清楚。任何建议将不胜感激。
这应该是你所要做的。
total = 0
for key, value in weight.items():
total += value * available[key]
print(total) # 310
此代码确实要求密钥存在于两个字典中。如果您尝试访问不存在的密钥,则会抛出密钥错误。因此,您可以在访问可用密钥之前检查密钥是否存在。
total = 0
for key, value in weight.items():
if key in available:
total += value * available[key]
您可以使用.keys()
或.items()
来获取遍历字典时所需的内容。
.keys()
将返回字典键的可迭代对象。
dict_keys(['pencil', 'pen', 'paper', 'eraser'])
.items()
将返回字典中每个项目的键和值。这很有用,因此我们在循环访问该项目时不必再次访问该项目的字典。
for k, v in weight.items():
print(k, v)
这将打印:
pencil 10
pen 20
paper 4
eraser 80
强烈建议阅读词典。它们是强大的数据结构。
字典上的 Python 文档
真正的蟒蛇词典文章