如何从字典中获取指定值的所有键?

时间:2014-11-11 01:39:40

标签: python python-3.x

如果我有这样的词:

some_dict = {'a': 1, 'b': 2, 'c': 2}

如何获取值为2的键,如下所示:

some_dict.search_keys(2)

这是一个例子。假设some_dict有几千或更多的密钥。

3 个答案:

答案 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)