Python中使用zip的浮动到小数的列表



我正试图在zip函数中将浮点列表转换为小数列表以创建字典。我不能使用for循环来解决性能问题,因为这是一个很长的浮动列表:

# The following data is just an example, not real data.
keys = ['a','b','c']
values = [[1.2342,-3.32,5.4322],[-4.32,7.542,9.76],[6.54,0.98,-1.22]]
# The following line outputs a dictionary where each key has a list of floats as value.
# I need those floats to be instead Decimal as I need to save them on a Dynamodb
# instance which does not support floats.
dictionary_of_floats = dict(zip(keys, values))

以下解决方案使用for循环,在我的情况下,由于数据太大,导致会话终止:

from decimal import Decimal
dict_of_decimals = {}
for i, key in enumerate(keys):
dict_of_decimals[key] = [Decimal(str(x)) for x in values[i]]

这是我唯一能想到的不直接使用for循环的方法:

dictionary_of_floats = dict(zip(keys, [[Decimal(dec) for dec in value] for value in values]))

keys = ['a','b','c']
values = [[1.2342,-3.32,5.4322],[-4.32,7.542,9.76],[6.54,0.98,-1.22]]
def _decimal(i):
return Decimal(str(i))
dict_of_decimals = {}
for i, key in enumerate(keys):
dict_of_decimals[key] = list(map(_decimal, values[i]))

如果你不想使用枚举,你可以做一些类似的事情,但我真的不知道你为什么想要这样的


keys = ['a','b','c']
values = [[1.2342,-3.32,5.4322],[-4.32,7.542,9.76],[6.54,0.98,-1.22]]
def _decimal(i):
return Decimal(str(i))
def decimal_list(l):
return list(map(_decimal, l))
values = list(map(decimal_list, values))
dict_of_decimals = zip(keys, values)