如何遍历dict以查看列表是否与一个或多个键匹配?

2024-06-17 11:35:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个口述,看起来像这样:

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

我为我的困惑道歉


Tags: in列表rawfooddefbardictprint
3条回答

这是你需要的吗?现在应该可以正常工作了:

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

编辑:你的循环是错误的方式使用这个

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()

相关问题 更多 >