You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将嵌套列表转换为指定结构并确保数据索引对应关系?

问题:将嵌套列表转换为平级列表并保持索引对应

现有嵌套列表:

list_sample = [{'name': 'A', 'data': {'date':['2021-01-01', '2021-02-01', '2021-03-01'], 
                        'credit_score':[800, 890, 895],
                        'spend':[1500, 25000, 2400], 
                        'average_spend':5000}},
               {'name': 'B', 'data': {'date':['2022-01-01', '2022-02-01', '2022-03-01'],
                                   'credit_score':[2800, 390, 8900],
                                   'spend':[15000, 5000, 400], 
                                   'average_spend':3000}},
               {'name': 'C', 'data': {'date':['2022-01-01', '2022-02-01', '2022-03-01'],
                                   'credit_score':[2800, 390, 8900],
                                   'spend':[15000, 5000, 400], 
                                   'average_spend':3000}}]

需要转换为以下三个平级列表,且同一索引位置的元素必须来自同一数据源:

date = ['2021-01-01', '2021-02-01', '2021-03-01', '2022-01-01', '2022-02-01', '2022-03-01', '2022-01-01', '2022-02-01', '2022-03-01']
credit_score = [800, 890, 895, 2800, 390, 8900, 2800, 390, 8900]
spend = [1500, 25000, 2400, 15000, 5000, 400, 15000, 5000, 400]

简洁实现方式

方法1:列表推导式(一行式)

通过嵌套遍历提取字段并拼接,代码简洁高效:

date = [d for item in list_sample for d in item['data']['date']]
credit_score = [cs for item in list_sample for cs in item['data']['credit_score']]
spend = [s for item in list_sample for s in item['data']['spend']]

方法2:循环扩展(可读性更强)

如果需要更清晰的执行逻辑,用循环逐个扩展列表:

date = []
credit_score = []
spend = []

for item in list_sample:
    user_data = item['data']
    date.extend(user_data['date'])
    credit_score.extend(user_data['credit_score'])
    spend.extend(user_data['spend'])

两种方法均能严格保证索引对应:每个用户的date、credit_score、spend内部元素顺序不变,且按用户顺序依次拼接,因此同一索引的元素必然来自同一数据源的同一位置。

内容的提问来源于Stack Exchange,提问作者Lata

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 12:05:21