我无法相信,但我对这应该是一项非常简单的任务感到难过。
我需要检查字符中的值是否为 键或值。我可以使用if 'A' in dictionary
查找密钥,但我似乎无法将其用于values
。我意识到我可以使用for循环来做这个,我可以诉诸于此但我想知道是否有内置的方法。
答案 0 :(得分:9)
您可以使用in
运算符和any
这样的函数
value in dictionary or any(value in dictionary[key] for key in dictionary)
此处,如果value in dictionary
是value
dictionary
会确保表达式被评估为Truthy
any(value in dictionary[key] for key in dictionary)
这部分确保被搜索的value
位于字典中的任何值中。
注意:这种方法非常有效,因为
您无需在内存中创建任何其他列表
any
功能短路。
如果您想确保要搜索的值完全匹配,那么您可以将in
更改为==
,就像这样
value in dictionary or any(value == dictionary[key] for key in dictionary)
As DSM Suggested,如果我们在Python 2.x中使用value in dict.itervalues()
,在Python 3.x中使用value in dict.values()
会更好
答案 1 :(得分:3)
两种简单的方法:
my_keys = my_dict.keys()
my_keys
是一个列表,因此您可以检查成员身份
my_values = my_dict.values()
相同
if some_thing in my_keys
if some_thing in my_values
当然,您不必使用密钥,因为使用密钥,您可以直接询问
if some_thing in my_dict
答案 2 :(得分:3)
我相信您正在寻找d.values()
d.keys()
是dict
个键的列表(尽管您最初所做的就是键的技巧)
d.values()
是dict
值的列表。 (您可以测试这些是否为会员资格。)
其中d
是您的dict
您可以将这些视为普通列表
还有:
d.items()
每个(key, value)
条目dict
形式的元组列表
示例:强>
[(key, value), (key, value) ... ]
因此使用d.keys()
测试d.values()
和in
中的成员资格很简单
使用d.items()
,您可以:
for pair in d.items():
if "A" in pair:
do your thing
还有d.iteritems()
您可以使用for
循环,我建议您谷歌。
答案 3 :(得分:3)
您可以执行以下操作 - 即将词典中的所有keys
和values
合并到一个新列表中,并使用in
关键字查找其中是否存在值或不:
dict = {"a" : "b", "c" : "d"}
value = "b"
if value in dict.keys() + dict.values():
print "present"
else:
print "absent"
您可以进一步优化以下内容,以便使用内置的O(1)
检查密钥(来自@ Wooble的评论),并且只有在字段值不是时才查找字典值在键
if value in dict or value in dict.values():
print "present"
`