Python 从两个列表生成字典的最快方法
我有两张单子。例如:Python 从两个列表生成字典的最快方法,python,list,dictionary,Python,List,Dictionary,我有两张单子。例如: keys = [1, 2, 3, 2, 4, 2, 1] 及 我想创建一个列表字典,如下所示: dict = {1: [1, 7], 2: [2, 4, 6], 3: [3], 4: [5]} 通过使用任何模块和不导入任何附加模块,最快的方法是什么,以及是什么提高了效率?使用集合。defaultdict from collections import defaultdict d_dict = defaultdict(list) for k,v in zip(keys,
keys = [1, 2, 3, 2, 4, 2, 1]
及
我想创建一个列表字典,如下所示:
dict = {1: [1, 7], 2: [2, 4, 6], 3: [3], 4: [5]}
通过使用任何模块和不导入任何附加模块,最快的方法是什么,以及是什么提高了效率?使用
集合。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]}
使用
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]}
您可以使用以下选项:
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]}
您可以使用以下选项:
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]}
你可以用它来做你的案子。如果某个键不存在,默认dict将调用工厂方法(list()
,对于当前的情况),它将返回新的空列表,而不是引发KeyError,该列表将附加值:
from collections import defaultdict
ld = defaultdict(list)
for k,v in zip(keys, values):
ld[k].append(v)
print(ld)
你可以用它来做你的案子。如果某个键不存在,默认dict将调用工厂方法(list()
,对于当前的情况),它将返回新的空列表,而不是引发KeyError,该列表将附加值:
from collections import defaultdict
ld = defaultdict(list)
for k,v in zip(keys, values):
ld[k].append(v)
print(ld)