我有一个字典,其中包含为每个键存储的多个值的列表。我想检查一个给定的值是否在字典中,但这不起作用:
if 'the' in d.values():
print "value in dictionary"
为什么不将多个值存储为列表?有没有其他方法来测试值是否在字典中?
答案 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