具有多个值的键 - 检查值是否在字典python中

时间:2015-02-10 14:01:11

标签: python dictionary

我有一个字典,其中包含为每个键存储的多个值的列表。我想检查一个给定的值是否在字典中,但这不起作用:

if 'the' in d.values():
    print "value in dictionary"

为什么不将多个值存储为列表?有没有其他方法来测试值是否在字典中?

6 个答案:

答案 0 :(得分:4)

d.values()通常以列表格式存储值。因此,您需要遍历列表内容并检查子串the是否存在。

>>> d = {'f':['the', 'foo']}
>>> for i in d.values():
        if 'the' in i:
            print("value in dictionary")
            break


value in dictionary

答案 1 :(得分:1)

您的价值观是一个清单!

for item in d.values():
    if 'the' in item:
        print "value in dictionary"

答案 2 :(得分:1)

应该很简单:

>>> d = { 'a': ['spam', 'eggs'], 'b': ['foo', 'bar'] }
>>> 'eggs' in d.get('a')
True

答案 3 :(得分:1)

您可以遍历字典。 如果您的词典如下所示:

my_dictionary = { 'names': ['john', 'doe', 'jane'], 'salaries': [100, 200, 300] }

然后你可以做到以下几点:

for key in my_dictionary:
    for value in my_dictionary[key]:
        print value

您可以自然搜索而不是打印。像这样:

for key in my_dictionary:
    for value in my_dictionary[key]:
        if "keyword" in value:
            print "found it!"

这可能是一种较短的方法,但这也应该有效。

答案 4 :(得分:0)

如果您只想检查某个值是否存在而无需知道它所属的密钥以及所有密钥,您可以使用:

if 'the' in str(d.values())

或者对于单行,您可以使用过滤功能

if filter(lambda x: 'eggs' in x, d.values()) # To just check
filter(lambda x: 'eggs' in d[x] and x, d) # To get all the keys with the value

答案 5 :(得分:0)

我喜欢写

if 0 < len([1 for k in d if 'the' in d[k]]):
    # do stuff

或等效

if 0 < len([1 for _,v in d.iteritems() if 'the' in v]):
    # do stuff