将项目添加到列表字典

时间:2019-12-24 03:39:26

标签: python python-3.x dictionary

假设一个字典的键是哈希值(或其他任何值),其元素是共享该哈希值的项的列表。一种编码方式:

G2

是否有更Python化(或更优雅或更有效)的方式来实现这一目标?

3 个答案:

答案 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