Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.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 如何遍历dict以查看列表的出现是否与一个或多个键匹配?_Python_List_Dictionary - Fatal编程技术网

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(背包键())
我得到上面的输出,而不是列出
背包中的所有物品