假设一个字典的键是哈希值(或其他任何值),其元素是共享该哈希值的项的列表。一种编码方式:
G2
是否有更Python化(或更优雅或更有效)的方式来实现这一目标?
答案 0 :(得分:5)
尝试使用defaultdict,例如
from collections import defaultdict
dict_of_lists = defaultdict(list)
dict_of_lists[key].append(item)
答案 1 :(得分:1)
另一种替代方法是使用dict.setdefault
,它只会在字典中不存在该键时才为该键分配一个值:
dict_of_lists.setdefault(key, []).append(item)
我觉得它很清晰,尽管如果您要进行微优化,您可能会发现每次创建一个空列表,无论是否需要。
答案 2 :(得分:0)
不使用defaultdict
:
key = item.get_key()
list_with_default = dict_of_lists.get(key, [])
list_with_default.append(item)
dict_of_lists[key] = list_with_default