如果我有这样的词:
some_dict = {'a': 1, 'b': 2, 'c': 2}
如何获取值为2的键,如下所示:
some_dict.search_keys(2)
这是一个例子。假设some_dict有几千或更多的密钥。
答案 0 :(得分:5)
你可以这样做:
[key for key, value in some_dict.items() if value == 2]
这使用列表推导来迭代(key, value)
项对,选择那些值等于2的键。
请注意,这需要在字典中进行线性搜索,因此它是 O(n)。如果这种性能不可接受,您可能需要创建并维护另一个按值对字典编制索引的数据结构。
答案 1 :(得分:1)
如果你想让结果成为字典
,你也可以使用字典理解{ x:y for x,y in some_dict.items() if y == 2}
输出:
{'c': 2, 'b': 2}
答案 2 :(得分:0)
好吧,您可以使用generator逐个生成找到的键值,而不是一次性返回所有键值。
函数search_keys
返回生成器
def search_keys(in_dict, query_val):
return (key for key, val in in_dict.iteritems() if val == query_val)
# get keys, one by one
for found_key in search_keys(some_dict, 2):
print(found_key)