Python列表&;词典交叉引用
快速提问,假设我有一份清单和一份口述:Python列表&;词典交叉引用,python,list,dictionary,Python,List,Dictionary,快速提问,假设我有一份清单和一份口述: menu = {'apple': 3.49, 'banana': 2.49, 'grape': 3.99, 'orange': 1.99} order = ['apple', 'orange'] 很明显,我想要的是,使用dict中的值来计算我订购的商品的总价(价值总和)。 显然,我不能: for item in order: if item in menu: print(sum(menu[item])) 我想你正在尝试做一个列表
menu = {'apple': 3.49, 'banana': 2.49, 'grape': 3.99, 'orange': 1.99}
order = ['apple', 'orange']
很明显,我想要的是,使用dict中的值来计算我订购的商品的总价(价值总和)。
显然,我不能:
for item in order:
if item in menu:
print(sum(menu[item]))
我想你正在尝试做一个列表理解和一个简单的for循环。挑一个或另一个 如果要执行简单的for循环,则在for循环的外部需要一个“sum_count”变量:
total_payment = 0
for item in order:
if item in menu:
total_payment += menu[item]
但您可以在列表中使用sum()
函数:
print(sum([menu.get(item, 0) for item in order]))
对于菜单中没有的项目,这应该不会失败,因为
.get()
函数只会返回0(这最终不会影响您的总付款)。我认为您正在尝试进行列表理解和简单的for循环。挑一个或另一个
如果要执行简单的for循环,则在for循环的外部需要一个“sum_count”变量:
total_payment = 0
for item in order:
if item in menu:
total_payment += menu[item]
但您可以在列表中使用sum()
函数:
print(sum([menu.get(item, 0) for item in order]))
对于菜单中没有的项目,这应该不会失败,因为.get()
函数只会返回0(这最终不会影响您的总付款)
你可以试试这个
你可以试试这个这对我很有用:
menu = {'apple': 3.49, 'banana': 2.49, 'grape': 3.99, 'orange': 1.99}
order = ['apple', 'orange']
myList = []
for item in order:
if item in menu:
myList.append(menu[item])
print(sum(myList))
你的字典不起作用的原因是,当你在字典上迭代时,你没有存储字典值,因此你需要创建一个空列表来存储字典值,然后在最后对列表中的项目求和。这对我来说很有效:
menu = {'apple': 3.49, 'banana': 2.49, 'grape': 3.99, 'orange': 1.99}
order = ['apple', 'orange']
myList = []
for item in order:
if item in menu:
myList.append(menu[item])
print(sum(myList))
您的字典不起作用的原因是,当您在字典上进行迭代时,没有存储字典值,因此需要创建一个空列表来存储字典值,然后将列表中的项目相加。您可以尝试以下方法:
menu = {'apple': 3.49, 'banana': 2.49, 'grape': 3.99, 'orange': 1.99}
order = ['apple', 'orange']
print(sum(menu[i] for i in order))
输出:
5.48
您可以尝试以下方法:
menu = {'apple': 3.49, 'banana': 2.49, 'grape': 3.99, 'orange': 1.99}
order = ['apple', 'orange']
print(sum(menu[i] for i in order))
输出:
5.48
注意,您还可以将列表理解替换为生成器表达式,并保存多达2个字符!--><代码>求和(菜单。按顺序为项目获取(项目,0)。。。它们是英文键盘上正确的小指字符……注意,您还可以将列表理解替换为生成器表达式,并保存多达2个字符!--><代码>求和(菜单。按顺序为项目获取(项目,0)。。。它们是英文键盘上正确的小指字符…哇,谢谢!!未意识到要创建另一个空列表来包含项目。非常感谢。哇,谢谢!!未意识到要创建另一个空列表来包含项目。非常感谢。哇,这太棒了,比在头上使用for可以节省更多的行数。@jxie0755很乐意帮忙!如果这个答案是你想要的,请接受它。非常感谢。哇,这太棒了,比在头上使用for可以节省更多的行数。@jxie0755很乐意帮忙!如果这个答案是你想要的,请接受它。非常感谢。