如何从python中的字典中检索具有给定值的所有键

时间:2017-05-10 16:17:58

标签: python python-3.x dictionary data-structures

我想获取给定值的字典键列表。例如

my_dict = {1: 2, 3: 3, 4: 2}
value = 2

我想获得1和4.

如何获取通讯密钥列表?

2 个答案:

答案 0 :(得分:7)

使用列表理解,您可以按值和按键进行过滤:

given_value = 2
keys_list = [k for k, v in my_dict.items() if v == given_value]  # [1, 4]

或使用Python内置filter

given_value = 2
keys_iter = filter(lambda k: my_dict[k] == given_value, my_dict.keys()) # return an iterator
keys_list = list(keys_iter)

答案 1 :(得分:2)

列表理解可以在线性时间内完成 - 如果您需要一次。 如果您的设计需要交替检索keys -> valuesvalues->keys mappings,那么您可以设计自己的类或使用库。

我自己的Python ExtradictBijectiveDict类,它正是这样做的,尽量做到尽可能直接。

但请注意,您需要在那里进一步指定所需的行为 - 在您的示例中,值2与2个键相关联。 BijectiveDict的默认行为是简单地覆盖先前的赋值:你jsut检索绑定到某个值的最新键。