2024-05-01 21:45:54 发布
网友
假设我有:
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值)。我不能用熊猫或小屁股。你知道吗
可以使用嵌套理解:
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-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,则更具可读性
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来支持以下内容:
numpy
import numpy as np arr = np.array([1,2,3,4]) arr *= 10
可以使用嵌套理解:
输出:
更具可读性的解决方案是使用正则
for-loops
如果使用
map
而不是最后一个for
,则更具可读性之后,您可以使用列表理解轻松地将其更改为更有效的形式:
或者,您可以使用
numpy
来支持以下内容:相关问题 更多 >
编程相关推荐