我想获取给定值的字典键列表。例如
my_dict = {1: 2, 3: 3, 4: 2}
value = 2
我想获得1和4.
如何获取通讯密钥列表?
答案 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 -> values
和values->keys mappings
,那么您可以设计自己的类或使用库。
我自己的Python Extradict有BijectiveDict
类,它正是这样做的,尽量做到尽可能直接。
但请注意,您需要在那里进一步指定所需的行为 - 在您的示例中,值2
与2个键相关联。 BijectiveDict的默认行为是简单地覆盖先前的赋值:你jsut检索绑定到某个值的最新键。