Python 2.7:将零添加到多值字典列表之间的大小差异并将其相加
Posted
技术标签:
【中文标题】Python 2.7:将零添加到多值字典列表之间的大小差异并将其相加【英文标题】:Python 2.7: Add zeros to the size difference between lists of a multi-value dictionary and sum it 【发布时间】:2021-01-27 18:36:27 【问题描述】:我有一个多值字典,我想总结所有可以使用的值
for key, value in nai_dictionary.items():
nai_sum_rate.setdefault('%s' %(key), []).append(np.sum(rate_nai[key], axis=0))
对于任何nai_sum_rate
字典,如this webpage 中所建议的那样。但是,通常值列表的长度并不相同。
这是我现在正在测试的测试数据
time = np.array([1,2,3,4,5,6])
test_dict['a'] = np.array([1,2,3,4,5,6]), np.array([1,2,3,4]), np.array([1,2,3,4,5,6])
我现在想要做的是用0
代替(在这种情况下)第二个数组的缺失值,其中没有值对time
变量值并将它们加在一起。
在我之前的测试中,在nai_sum_rate
是list
而不是dictionary
之前,我使用this link 中提供的答案来解决引用变量time
的问题。我一直在尝试使用字典,但无济于事。
预期总和是
3, 6, 9, 12, 10, 12
【问题讨论】:
对于任何新的开发或学习,您可能应该忽略 Python 2,而将时间花在当前推荐和支持的语言版本上,即 Python 3。 这个特殊问题仅适用于 Python2,因为来自 Fermi 科学支持中心的 Fermitools 包尚未移植到 Python3。这只是与 Fermitools 无关的一小部分工作,但在后端,我正在使用 Fermitools,我无法从 Python2 更改为 Python3。 【参考方案1】:我自己解决了这个问题,这是我想出的代码
for key, value in nai_dictionary.items():
i=0
while i < len(rate_nai[key]):
for key, value in nai_dictionary.items():
for index, values in enumerate(rate_nai[key]):
if len(time) < len(values):
diff = len(values) - len(time)
rate_nai[values] = values[0:np.array(values).size-diff]
elif len(time) > len(values):
diff = len(time) - len(values)
rate_nai['%s' %(key)].pop(index)
rate_nai.setdefault(
'%s' %(key)).append(np.append(np.array(values), np.zeros(diff)))
i+=1
它可以解决任何长度小于引用变量time
的值的问题。
【讨论】:
以上是关于Python 2.7:将零添加到多值字典列表之间的大小差异并将其相加的主要内容,如果未能解决你的问题,请参考以下文章