python为带有lis的字典使用if和for函数

2024-10-03 09:19:47 发布

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

您好,我是python的新手,希望能为我目前面临的问题提供一些实例。我最近学习了字典和列表,发现字典的值可以格式化为列表。你知道吗

面临的问题: 1) 如果使用return v或x,为什么函数不能工作?在本例中,它将返回另一个键的值,例如“zipper”。我想理解为什么它不适用于存储在列表中的值,即snack键的所有值。 如果我在参数中输入“sweets”作为x,我希望它返回sweets的值。你知道吗

如果我在参数中输入sweets作为X,当调用函数时,它会打印出zippers的值(我不知道为什么) 但是,如果我将返回值改为return(x),问题就解决了,但我只是想理解为什么returnv或x不起作用

bagpack= {
  "pouch":"water bottle",
  "snacks":["chocolate","sweets", "icecream"],
  "front_zip":"zipper"
}

def search_bag(x):
    for k, v in bagpack.iteritems():
        for snack in bagpack["snacks"]:
            if v == x or snack == x:
                return v or x


print(search_bag("chocolate"))

Tags: orin列表forsearch参数return字典
3条回答

按以下方式更新搜索功能:

def search_bag(x):
  for k, v in bagpack.iteritems():
      if x in v:
          return k

基本上,在对象或数组中搜索字符串并返回键。
假设:x被发送到当前位置,其值不精确

假设需要在字典中找到指定项的所有键,可以使用以下方法:

bagpack= {
  "pouch":"water bottle",
  "snacks":["chocolate","sweets", "icecream"],
  "front_zip":"zipper"
}

def search_bag(x):
    lst = []
    for k, v in bagpack.iteritems():   # items() in python3
        if isinstance(v, list):
            v = ' '.join(v)
            if x in v:
                lst.append(k)
        else:
            if x == v:
                lst.append(k)
    return lst

print('Found in {}'.format(', '.join(search_bag("chocolate"))))
# Found in snacks

我想你想要的结果是真是假

bagpack= {
    "pouch":"water bottle",
    "snacks":["chocolate","sweets", "icecream"],
    "front_zip":"zipper"
}

def search_bag(x):
    for k, v in bagpack.iteritems():
        for snack in bagpack["snacks"]:
            if v == x or snack == x:
                return v == x or snack == x
        return False

print("search Result : " + str(search_bag("chocolate")))

结果 搜索结果:真

相关问题 更多 >