我有两个列表。例如:
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]} 最快的方法是什么?通过使用任何模块和不导入任何额外的模块,是什么产生了效率提升?
发布于 2018-08-26 09:53:49
使用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]}发布于 2018-08-26 09:55:15
您可以使用以下内容:
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]}发布于 2018-08-26 09:57:13
你可以在你的案例中使用defaultdict。在某些键不存在的情况下,默认的dict调用工厂方法(当前情况下为list()),而不是引发KeyError,它将返回新的空列表,即附加了值:
from collections import defaultdict
ld = defaultdict(list)
for k,v in zip(keys, values):
ld[k].append(v)
print(ld)https://stackoverflow.com/questions/52022564
复制相似问题