首页 > 解决方案 > 通过值列表获取键

问题描述

我有一本字典和一个值列表,例如:

dictionary = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

liste = [2, 3]

我想:

result = ['b', 'c']

如果我有一本非常大的字典,那么最好的方法是什么?

键具有唯一值。

标签: python

解决方案


这里的想法是为高效查找创建一个 reverse_dict,否则复杂度可能是 O(mn)、m 个键、n 个列表长度。值可以重复,因此保留键列表也很重要。

result = []
reverse_dict = collections.defaultdict(list)
for key, value in dictionary.items():
    reverse_dict[value].append(key) 
for v in liste:
    result.extend(reverse_dict[v])

推荐阅读