我有两个清单
listA = (1,2,3,4)
listB = (A,B,C,D,A,B,C,D,A,B,C,D,A,B,C,D,A,B,C,D)
我想使用listA
作为listB
中所有值的键来构建字典
dict = {1:A,2:B,3:C,4:D,1:A,2:B,3:C,4:D,1:A,2:B,3:C,4:D,1:A,2:B,3:C,4:D,1:A,2:B,3:C,4:D}
我无法使用itertools
,我还必须考虑到我的某些值是空的,因此我试图像这样构建dict
def create_dict(keys,values):
return dict(zip(keys, values + [None] * (len(keys) - len(values))))
这有效,但仅适用于键的长度。
答案 0 :(得分:2)
您想生成的字典是不可能的-它包含多个相同的密钥,并且在字典中是不允许的。
您可能只有一个键指向值列表:
import collections
import itertools
d = collections.defaultdict(list)
for k, v in zip(itertools.cycle(listA), listB):
d[k].append(v)
会生成如下这样的字典:
{
1: [A, A, A, A],
2: [B, B, B, B],
3: [C, C, C, C],
4: [D, D, D, D],
}