Python 如何遍历dict以查看列表的出现是否与一个或多个键匹配?
我有一个口述,看起来像这样:Python 如何遍历dict以查看列表的出现是否与一个或多个键匹配?,python,list,dictionary,Python,List,Dictionary,我有一个口述,看起来像这样: BACKPACK = {'granola bar': 1, 'cooked meat': 1, 'raw meat': 1, 'dried foods': 1} 我想做的是检查列表中的一个或多个元素是否出现在该dict中,如果是,我想转到下一个方法,如果不是,我想做其他事情 BACKPACK = {'granola bar': 1, 'cooked meat': 1, 'raw meat': 1, 'dried foods': 1} HEALTH = 25 de
BACKPACK = {'granola bar': 1, 'cooked meat': 1, 'raw meat': 1, 'dried foods': 1}
我想做的是检查列表中的一个或多个元素是否出现在该dict中,如果是,我想转到下一个方法,如果不是,我想做其他事情
BACKPACK = {'granola bar': 1, 'cooked meat': 1, 'raw meat': 1, 'dried foods': 1}
HEALTH = 25
def rest():
print formatter()
foods = ['granola bars', 'cooked meat', 'dried foods']
for food in foods:
if food in BACKPACK:
eat_food(BACKPACK, HEALTH)
break
else:
print "You don't have any food in your pack." \
" You decide to go hunting."
# go_hunting()
def eat_food(food, health):
print food
print health
如果dict中的键与函数中的列表相对应,我想做的是打印出一个要吃的可用食物的列表
例如,如果我有:
BACKPACK = {'cooked meat': 1, 'raw meat': 1}
foods = ['granola bars', 'cooked meat', 'dried foods', 'raw meat']
这应该输出:
1. cooked meat
2. raw meat
很抱歉造成混淆编辑:您的循环是错误的使用方法
BACKPACK ={'cooked meat': 1, 'raw meat': 1}
HEALTH = 25
def rest():
# print formatter()
foods = ['granola bars', 'cooked meat', 'dried foods', 'raw meat']
for food in BACKPACK:
if food in foods:
eat_food(food,HEALTH)
else:
print "You don't have any food in your pack." \
" You decide to go hunting."
# go_hunting()
def eat_food(food,health):
#get rid of food
#add health
print food
rest()
编辑:你的循环是错误的使用方法
BACKPACK ={'cooked meat': 1, 'raw meat': 1}
HEALTH = 25
def rest():
# print formatter()
foods = ['granola bars', 'cooked meat', 'dried foods', 'raw meat']
for food in BACKPACK:
if food in foods:
eat_food(food,HEALTH)
else:
print "You don't have any food in your pack." \
" You decide to go hunting."
# go_hunting()
def eat_food(food,health):
#get rid of food
#add health
print food
rest()
这是你需要的吗?它现在应该可以正常工作了:
BACKPACK = {'raw meat': 1, 'raw meat': 1, 'granola bar': 1, 'dried foods': 1, 'cooked meat': 1}
HEALTH = 25
def rest():
foods = ['granola bar', 'cooked meat', 'dried foods']
back = {}
for x in foods:
for y in BACKPACK:
if y in foods:
back[y] = 1
for key, value in back.items():
print("1. " + str(key))
def eat_food(food, health):
print(food)
print(health)
rest()
这是你需要的吗?它现在应该可以正常工作了:
BACKPACK = {'raw meat': 1, 'raw meat': 1, 'granola bar': 1, 'dried foods': 1, 'cooked meat': 1}
HEALTH = 25
def rest():
foods = ['granola bar', 'cooked meat', 'dried foods']
back = {}
for x in foods:
for y in BACKPACK:
if y in foods:
back[y] = 1
for key, value in back.items():
print("1. " + str(key))
def eat_food(food, health):
print(food)
print(health)
rest()
如果只想获取列表中的所有键,则应使用集合:
intersection = set(mylist) & set(mydict.keys())
若并没有,交叉点将是一个带有假布尔值的空集,否则它将有一个真布尔值。因此,要检查是否存在此类元素,您只需编写:
if intersection:
do_sth
else:
do_sth_else
如果只想获取列表中的所有键,则应使用集合:
intersection = set(mylist) & set(mydict.keys())
若并没有,交叉点将是一个带有假布尔值的空集,否则它将有一个真布尔值。因此,要检查是否存在此类元素,您只需编写:
if intersection:
do_sth
else:
do_sth_else
你能解释一下怎么了吗?我试着运行代码,它似乎正在运行…对不起,各位,我真的很忙,不小心碰到了“提问”,我还没写完问题。我完成了,希望这能澄清一些事情。你能解释一下怎么了吗?我试着运行代码,它似乎正在运行…对不起,各位,我真的很忙,不小心碰到了“提问”,我还没写完问题。我完成了,希望这能澄清一些事情。对不起,请阅读我上面的评论并再次查看答案。这很接近,但我很确定我必须使用
enumerate
somewhere抱歉,请阅读我上面的评论并再次查看答案。这很接近,但我很确定我必须使用枚举
在什么地方为什么要使用集合而不是来进行
循环?它更简单、更简单,而且可能更快。你坐下来感觉有点饿。
<生肉的代码>1你想吃什么:
如果我有这个:背包={‘熟肉’:1,‘生肉’:1,‘格兰诺拉麦片棒’:1}
还有这个:食物=[‘格兰诺拉麦片棒’、‘熟肉’、‘干粮’、‘生肉’]
用你说的:交叉点=set(食物)&set(背包键())
我得到了上面的输出,而不是它列出了背包中的所有物品
为什么要用集合而不是来循环
呢?它更简单、更简单,而且可能更快。你坐下来感觉有点饿。
<生肉的代码>1你想吃什么:
如果我有这个:背包={‘熟肉’:1,‘生肉’:1,‘格兰诺拉麦片棒’:1}
还有这个:食物=[‘格兰诺拉麦片棒’、‘熟肉’、‘干粮’、‘生肉’]
用你说的:交叉点=set(食物)&set(背包键())
我得到上面的输出,而不是列出背包中的所有物品