访问字典python中的列表中的项目

时间:2012-06-15 19:07:26

标签: python list dictionary

我有一个字典,其中包含与列表相关联的键。

mydict = {'fruits': ['banana', 'apple', 'orange'],
         'vegetables': ['pepper', 'carrot'], 
         'cheese': ['swiss', 'cheddar', 'brie']}

我想要做的是使用if语句,如果我搜索项目及其在字典中的任何列表中,它将返回密钥。这就是我的尝试:

item = cheddar
if item in mydict.values():
    print key 

但它没有做任何事情,输出应该是:

cheese

这看起来很简单,但我无法弄明白。任何帮助都很棒。

3 个答案:

答案 0 :(得分:9)

您必须使用for,简单的if不足以检查一组未知的列表:

for key in mydict.keys():
    if item in mydict[key]:
        print key

没有明确for语句的方法可能是这样的:

foundItems = (key for key, vals in mydict.items() if item in vals)

返回与item关联的所有密钥。但在内部,仍然会进行某种迭代。

答案 1 :(得分:2)

mydict = {'fruits': ['banana', 'apple', 'orange'],
     'vegetables': ['pepper', 'carrot'], 
     'cheese': ['swiss', 'cheddar', 'brie']}

item = "cheddar"
if item in mydict['cheese']:
    print ("true")

这是有效的,但你必须引用字典中的键,如奶酪,蔬菜等,因为你制作字典的方式,希望这有帮助!

答案 2 :(得分:2)

mydict = {'fruits': ['banana', 'apple', 'orange'],
     'vegetables': ['pepper', 'carrot'], 
     'cheese': ['swiss', 'cheddar', 'brie']}

item = "cheddar"

for key, values in mydict.iteritems():
    if item in values:
        print key

如果您要进行大量此类搜索,我认为您可以为原始mydict创建反向索引以加快查询速度:

reverse_index = {}

for k, values in mydict.iteritems():
     for v in values:
         reverse_index[v] = k

print reverse_index.get("cheddar")
print reverse_index.get("banana")

这样,每次查找项目时都不必遍历values列表。