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))))
哪个有效,但仅适用于键的长度。
解决方案
您想要生成的 dict 是不可能的 - 它包含多个键是相同的键,并且在 dicts 中是不允许的。
您可以有一个指向值列表的键:
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],
}
推荐阅读
- javascript - 在调度程序的视图中显示信息
- python - Django:使用设置文件夹;ImportError:无法导入名称“QUEUE_NAME”
- reactjs - 如何在反应中降低单元格或行的高度?
- arduino - Adobe Flash 应用程序从 Raspberry Pi 上的 SOCAT 实例读取?
- python-3.x - AttributeError:“numpy.ndarray”对象没有属性“目标”
- excel - COUNTIFS:使用多个条件计算百分比
- excel - 替换“.”之前的单元格字符 或者在“.”之间 Vba
- c# - 根据用户输入更改发票定价
- java - 分层音频文件Java时的峰值削波
- c++ - DirectXTK SoundEffect->CreateInstance() 返回 NULL