Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python列表&;词典交叉引用_Python_List_Dictionary - Fatal编程技术网

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很乐意帮忙!如果这个答案是你想要的,请接受它。非常感谢。