子发布列表中的乘法浮点值作为字典中的值[已编辑]

2024-05-01 21:45:54 发布

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

假设我有:

worksheet={
"a":[[1.0],[2.0, 3.0]],
"b":[[4.0]]
}

我的目标是将subpublists中的每个值乘以一个值,-保持相同的结构-比如说*10,所以我需要:

worksheet={
"a":[[10.0],[20.0, 30.0]],
"b":[[40.0]]
}

每个dict值总是包含一个包含一个或多个子列表的列表。 每个子列表将始终至少包含一个float。没有空列表(没有空的dict值)。我不能用熊猫或小屁股。你知道吗


Tags: 目标列表float结构dictworksheet屁股subpublists
2条回答

可以使用嵌套理解:

worksheet = {'a': [[1.0], [2.0, 3.0]], 'b': [[4.0]]}
new_worksheet = {a:[[c*10 for c in i] for i in b] for a, b in worksheet.items()}

输出:

{'a': [[10.0], [20.0, 30.0]], 'b': [[40.0]]}

更具可读性的解决方案是使用正则for-loops

for key in worksheet:
    for list in worksheet[key]:
        for sublist in list_:
            for index, value in enumerate(sublist):
                sublist[index] = value * 10

如果使用map而不是最后一个for,则更具可读性

def multiply(val):
    return val * 10

# ...
for sublist in list_:
    sublist = map(multiply, sublist)  # Note enumerate isnt necessary

之后,您可以使用列表理解轻松地将其更改为更有效的形式:

{key: [[value * 10 for value in sublist] for sublist in list_] for key, list in worksheet.items()}

或者,您可以使用numpy来支持以下内容:

import numpy as np

arr = np.array([1,2,3,4])
arr *= 10

相关问题 更多 >