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_ratelist 而不是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:将零添加到多值字典列表之间的大小差异并将其相加的主要内容,如果未能解决你的问题,请参考以下文章

将零添加到列表中

Python 字典的一键多值,即一个键对应多个值

python 2.7:从集合列表创建字典

将零填充到 Python 列表

python数据类型—列表元组字典

Python迭代多值嵌套字典[关闭]