我有两个列表。例如:
keys = [1, 2, 3, 2, 4, 2, 1]
和
values = [1, 2, 3, 4, 5, 6, 7]
我想从其中创建列表的字典,如下所示:
dict = {1: [1, 7], 2: [2, 4, 6], 3: [3], 4: [5]}
最快的方法是什么?通过使用任何模块,也可以不导入任何其他模块,这会带来效率的提高吗?
答案 0 :(得分:2)
使用collections.defaultdict
from collections import defaultdict
d_dict = defaultdict(list)
for k,v in zip(keys, values):
d_dict[k].append(v)
dict(d_dict)
#{1: [1, 7], 2: [2, 4, 6], 3: [3], 4: [5]}
答案 1 :(得分:1)
您可以使用以下内容:
d = {}
for k, v in zip(keys, values):
d.setdefault(k, []).append(v)
print(d)
输出:
{1: [1, 7], 2: [2, 4, 6], 3: [3], 4: [5]}
答案 2 :(得分:0)
您可以使用defaultdict
处理您的案件。如果某些键不存在,则默认dict调用工厂方法(当前情况为list()
),而不是引发KeyError,它将返回新的空列表,并附加值:
from collections import defaultdict
ld = defaultdict(list)
for k,v in zip(keys, values):
ld[k].append(v)
print(ld)