如何将字典中子子列表内的浮点数相乘且保持原结构不变
给字典嵌套列表中的浮点数批量乘固定值(保持原结构)
很简单,用Python基础的循环和列表推导就能搞定,完全不用依赖Pandas或者Numpy,这里给你两种实现方式,根据需求选就行:
方式一:直接修改原字典
如果不需要保留原始数据,直接在原字典上修改效率更高:
# 原始数据字典 worksheet = {"a": [[1.0], [2.0, 3.0]], "b": [[4.0]]} # 定义要乘的固定值 multiplier = 10.0 # 遍历字典的每个键和对应的子列表集合 for key, sublist_group in worksheet.items(): # 遍历每个子列表,逐个替换成缩放后的新列表 for idx in range(len(sublist_group)): sublist_group[idx] = [num * multiplier for num in sublist_group[idx]] # 输出结果 print(worksheet)
运行后得到的结果就是你想要的:
{'a': [[10.0], [20.0, 30.0]], 'b': [[40.0]]}
方式二:创建新字典保留原数据
要是想保留原始字典不动,那就新建一个字典来存结果:
# 原始数据字典 worksheet = {"a": [[1.0], [2.0, 3.0]], "b": [[4.0]]} multiplier = 10.0 # 初始化新字典 new_worksheet = {} for key, sublist_group in worksheet.items(): # 对每个子列表集合做缩放处理 scaled_sublists = [] for sublist in sublist_group: scaled_sublist = [num * multiplier for num in sublist] scaled_sublists.append(scaled_sublist) new_worksheet[key] = scaled_sublists # 输出新字典,原字典worksheet不受影响 print(new_worksheet)
思路解释
核心逻辑就是两层遍历:
- 第一层遍历字典的键值对,拿到每个键对应的子列表集合;
- 第二层遍历每个子列表,用列表推导式把里面的每个浮点数都乘以固定值,生成新的子列表;
- 最后把处理后的子列表放回原位置(方式一)或者存入新字典(方式二)。
这种方法完全符合你的要求:保持原结构不变,只修改浮点数的值,而且不需要任何第三方库~
内容的提问来源于stack exchange,提问作者Victor
相关产品推荐
相关产品推荐

