追加存在的行数之和

2024-05-12 13:41:46 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的密码:

def dictListSum(dictionary):
    temporary_list = []
    final_list = []

    for (key, value) in sorted(dictionary.items()):
        temporary_list.append(value[0:])

    nRows = len(temporary_list)
    nCols = len(temporary_list[0])

    for row in range(0, nRows-1):
        for col in range(0, nCols):
            final_list.append(temporary_list[row][col] + temporary_list[row + 1][col])

    return final_list

我在处理这一行时遇到问题:

final_list.append(temporary_list[row][col] + temporary_list[row + 1][col])

以下是我希望从用户的字典输入中得到的格式:

a = {'A': [3, 11, 2], 'B': [5, 2, 0]}

现在,如果用户的字典只有两个键,那么代码可以正常运行。当用户输入以下内容时,我的问题开始出现:

a = {'A':[4, 5, 2, 5, 6, 3], 'B': [4, 5, 6, 2, 4, 6], 'C': [1, 1, 1, 1, 1, 1,], 'D': [2, 2, 2, 2, 2, 2]}

如果是这种情况,那么我的麻烦代码行必须如下所示:

final_list.append(temporary_list[row][col] + temporary_list[row + 1][col] temporary_list[row + 2][col] temporary_list[row + 3][col])

那么,我如何才能将所有行(当前列表)以顺序格式添加到一起呢请记住,用户可以创建他/她想要的任意多个密钥,只要它们具有相同的长度并采用列表格式。

可能错误的输出示例(使用后一个字典):

a = {'A':[4, 5, 2, 5, 6, 3], 'B': [4, 5, 6, 2, 4, 6], 'C': [1, 1, 1, 1, 1, 1,], 'D': [2, 2, 2, 2, 2, 2]}
dictListSum(a)

[8, 10, 8, 7, 10, 9, 5, 6, 7, 3, 5, 7, 3, 3, 3, 3, 3, 3]

应该发生什么:

dictListSum(a)

[11, 13, 11, 10, 13, 12]

Tags: 用户infordictionary字典value格式col
1条回答
网友
1楼 · 发布于 2024-05-12 13:41:46

考虑这一点的一种方法是:将字典的值视为表中的行,然后沿列求和。i、 e.将其转换为:

[4, 5, 2, 5, 6, 3],
[4, 5, 6, 2, 4, 6],
[1, 1, 1, 1, 1, 1],
[2, 2, 2, 2, 2, 2]

为此:

[4, 4, 1, 2],
[5, 5, 1, 2],
[6, 2, 1, 2],
[2, 5, 1, 2],
[4, 6, 1, 2],
[6, 3, 1, 2]

…然后对列表求和。为实现这一目标:

[sum(lst) for lst in zip(*a.values())]

^{}是一种基本上等同于“转置”一个“矩阵”的模式;然后,我们沿着每一行求和(lst

相关问题 更多 >