如何用Python循环将两个列表合并为字典数组?
将两个列表合并为指定格式的字典数组
原始数据
日期列表:
dates = ['2023-07-18', '2023-07-19', '2023-07-20', '2023-07-21', '2023-07-22', '2023-07-23', '2023-07-24']
费用数值列表:
fees = [36263, 31926, 30988, 31304, 27971, 27376, 7479]
预期输出
需要生成一个由字典组成的数组,每个字典包含固定键Date和Fees:
{'Date': '2023-07-18', 'Fees': 36263} {'Date': '2023-07-19', 'Fees': 31926} {'Date': '2023-07-20', 'Fees': 30988} {'Date': '2023-07-21', 'Fees': 31304} {'Date': '2023-07-22', 'Fees': 27971} {'Date': '2023-07-23', 'Fees': 27376} {'Date': '2023-07-24', 'Fees': 7479}
问题分析
你之前得到的是一个以日期为键、费用为值的单个大字典,原因是代码逻辑错误——把所有键值对都塞进了同一个字典,而非创建多个独立字典并放入列表。
解决方法
方法1:基于索引的for循环
通过遍历列表索引,逐个创建字典并添加到结果列表:
dates = ['2023-07-18', '2023-07-19', '2023-07-20', '2023-07-21', '2023-07-22', '2023-07-23', '2023-07-24'] fees = [36263, 31926, 30988, 31304, 27971, 27376, 7479] result = [] for i in range(len(dates)): result.append({'Date': dates[i], 'Fees': fees[i]}) # 打印输出 for item in result: print(item)
方法2:使用zip函数(更简洁)
zip函数可以直接配对两个列表的对应元素,结合列表推导式快速生成结果:
dates = ['2023-07-18', '2023-07-19', '2023-07-20', '2023-07-21', '2023-07-22', '2023-07-23', '2023-07-24'] fees = [36263, 31926, 30988, 31304, 27971, 27376, 7479] result = [{'Date': d, 'Fees': f} for d, f in zip(dates, fees)] # 打印输出 for item in result: print(item)
内容的提问来源于stack exchange,提问作者omershaikh
相关产品推荐
相关产品推荐

