再次使用键列表从列表创建字典

时间:2018-07-05 13:40:12

标签: python

我有两个清单

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))))

这有效,但仅适用于键的长度。

1 个答案:

答案 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],
}