Python 子发布者中的乘法浮动作为字典中的值[已编辑]
假设我有:Python 子发布者中的乘法浮动作为字典中的值[已编辑],python,list,Python,List,假设我有: 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值将始终包含一个包含一个或多个子列表的列表。 每个子列表将始终至少包含一个浮点。无空列表(无空dict值)。我不能使用Pandas或Numpy。您可以使用嵌套理解
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值将始终包含一个包含一个或多个子列表的列表。
每个子列表将始终至少包含一个浮点。无空列表(无空dict值)。我不能使用Pandas或Numpy。您可以使用嵌套理解:
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()}
{key: [[value * 10 for value in sublist] for sublist in list_] for key, list in worksheet.items()}
输出:
{'a': [[10.0], [20.0, 30.0]], 'b': [[40.0]]}
您可以使用嵌套理解:
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()}
{key: [[value * 10 for value in sublist] for sublist in list_] for key, list in worksheet.items()}
输出:
{'a': [[10.0], [20.0, 30.0]], 'b': [[40.0]]}
更具可读性的解决方案是对循环使用常规的
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
之后,您可以使用列表理解轻松地将其更改为更有效的形式:
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()}
{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
更具可读性的解决方案是对循环使用常规的
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
之后,您可以使用列表理解轻松地将其更改为更有效的形式:
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()}
{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
所有子列表中的每个值都将乘以相同的值。换句话说,所有数字都将乘以一个数字。在这个例子中:(1.0,2.0,3.0,4.0)乘以10.0为什么标题上写着“乘法键”?您只是将列表中的元素相乘,而不是键相乘。@Barmar您完全正确。我编辑了这个标题,希望它能在同样的情况下帮助其他人。非常感谢你的建议。我的错。-所有子列表中的每个值都将乘以相同的值。换句话说,所有数字都将乘以一个数字。在这个例子中:(1.0,2.0,3.0,4.0)乘以10.0为什么标题上写着“乘法键”?您只是将列表中的元素相乘,而不是键相乘。@Barmar您完全正确。我编辑了这个标题,希望它能在同样的情况下帮助其他人。非常感谢你的建议。我的错。-千万不要在程序中使用默认关键字
dict
,list
。非常感谢@leoschet。我会记住的。没错,@kvmahesh我在使用list作为变量时遇到了一个大问题。我目前使用的3D程序已经停止工作了,我花了好几个小时,直到我最终意识到我改变了list()函数的值。。。天啊。。。我永远不会忘记那一课……永远不要在节目中使用默认关键字dict
,list
,非常感谢@leoschet。我会记住的。没错,@kvmahesh我在使用list作为变量时遇到了一个大问题。我目前使用的3D程序已经停止工作了,我花了好几个小时,直到我最终意识到我改变了list()函数的值。。。天啊。。。我永远不会忘记那一课。。。