这是我的密码:
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]
考虑这一点的一种方法是:将字典的值视为表中的行,然后沿列求和。i、 e.将其转换为:
为此:
…然后对列表求和。为实现这一目标:
^{} 是一种基本上等同于“转置”一个“矩阵”的模式;然后,我们沿着每一行求和(
lst
)相关问题 更多 >
编程相关推荐