通过值列表获取键
我有一本字典和一个值列表,例如:
dictionary = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
liste = [2, 3]
我想:
result = ['b', 'c']
如果我有一本非常大的字典,那么最好的方法是什么?
键具有唯一值。
回答
这里的想法是为高效查找创建一个 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])