【发布时间】:2018-06-15 05:02:21
【问题描述】:
我创建了以下字典:
dct = {'T': [[1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 1, 0]], 'B': [[0, 1, 0, 0, 0], [0, 0, 0, 0, 1]], 'J': [[0, 0, 1, 0, 0], [0, 0, 0, 0, 1]], 'K': [0, 0, 0, 0, 1]}
请注意,每个值要么是单个列表,要么是多个列表。我试图弄清楚我是否可以对每个键的值列表进行条件压缩(或一些替代解决方案,它可以提供我想要的输出)。条件是,如果连续值列表上的 1 在彼此之间的 2 个索引值的距离内,我只希望值列表针对给定键压缩在一起。
我想要从这个输入字典中得到的最终输出应该是这样的:
zp_dict = {'T': [2, 1, 0, 1, 0], 'B': [[0, 1, 0, 0, 0], [0, 1, 0, 0, 0]], 'J': [0, 0, 1, 0, 1], 'K': [0, 0, 0, 0, 1]}
请注意,“T”和“J”的值列表应该压缩在一起,因为非零值相隔不超过 2 个索引,但“B”的值列表应该分开,因为非零值零值相隔 3 个索引,“K”值列表应单独保留。
为了说明我正在尝试做的事情,请考虑以下代码,它几乎可以完成我想做的事情,但没有条件:
zp_dict = {}
for k, v in dct.items():
zp_dict[k] = [sum(x) for x in zip(*v)]
这会产生以下新字典,这对于键“B”是错误的:
zp_dict = { 'T': [2, 1, 0, 1, 0], 'B': [0, 1, 0, 0, 1], 'J': [0, 0, 1, 0, 1], 'K': [0, 0, 0, 0, 1]}
【问题讨论】:
-
我认为没有必要投反对票......他显然已经做出了努力......只是他没有以我能理解的任何方式解释标准
标签: python python-3.x dictionary