如何为Python字典的多个键分别追加对应不同数组数据?
解决方法
你的问题出在嵌套循环遍历所有键和所有数据组,导致每个键的列表都被追加了所有数据。正确的思路是让字典的键和数据组一一对应,以下是两种简洁的实现方式:
方式一:直接通过配对生成字典(推荐)
利用zip()将自动生成的键列表和原数据组一一配对,直接构建目标字典:
A = ([12, 13, 15], [13, 16, 18], [15, 15, 17]) # 生成与数据组数匹配的键名:group1、group2...groupN keys = [f'group{i+1}' for i in range(len(A))] # 键与数据组配对,转成字典;如果需要将元组转成列表,用推导式处理 group_dict = {key: list(data) for key, data in zip(keys, A)}
运行后group_dict的结果:
{'group1': [12, 13, 15], 'group2': [13, 16, 18], 'group3': [15, 15, 17]}
方式二:先创空字典再逐个填充
如果你需要先初始化空字典再逐步添加数据,通过索引关联键和对应的数据组即可:
A = ([12, 13, 15], [13, 16, 18], [15, 15, 17]) # 初始化空列表字典 group_dict = {f'group{i}': [] for i in range(1, len(A)+1)} # 遍历数据组的索引和内容,对应到指定键 for idx, data_group in enumerate(A): target_key = f'group{idx+1}' # 用extend添加组内所有元素,若要把整个组作为单个元素存入,改用append(data_group) group_dict[target_key].extend(data_group)
错误原因说明
你之前的嵌套循环逻辑类似这样:
# 错误示例:所有数据被追加到每个键的列表 for key in group_dict: for data in A: group_dict[key].extend(data)
这种逻辑会让每个键遍历所有数据组,自然所有数据都会进入每个列表。只要保证一个键只对应索引匹配的一个数据组,就能得到预期结果。
内容的提问来源于stack exchange,提问作者Ludovica
相关产品推荐
相关产品推荐

