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

Python可使用推导式改写列表转字典逻辑吗?有什么优化实现方案

优化方案

方案1:用推导式改写原有两个函数

完全可以用推导式改写你提供的两个函数,逻辑和原实现完全一致,同时简化代码:

改写二维列表转换函数

用列表推导式+列表分片替代嵌套循环:

def converting_to_two_dimensional_list(data: list, column_size: int):
    return [data[i:i+column_size] for i in range(0, len(data), column_size)]

改写结果构造函数

用enumerate提前获取表头索引,避免每次循环调用index查找索引提升效率,结合字典推导式+列表推导式实现:

def final_result(list_two_dimensional: list):
    headers = list_two_dimensional[0]
    data_rows = list_two_dimensional[1:]
    return {col: [row[idx] for row in data_rows] for idx, col in enumerate(headers)}

方案2:更精简的单函数实现

可以利用Python内置的zip方法转置二维列表,一步构造目标字典,代码更符合Python惯用写法:

def get_target_dict(data: list, column_size: int):
    two_d_list = [data[i:i+column_size] for i in range(0, len(data), column_size)]
    return {header: list(values) for header, *values in zip(*two_d_list)}

# 调用测试
if __name__ == '__main__':
    data = ['Sectors', 'Countries', 'Regions', 6, 9, 4, 2, 3, 0]
    column_size = 3
    print(get_target_dict(data, column_size))
    # 输出:{'Sectors': [6, 2], 'Countries': [9, 3], 'Regions': [4, 0]}

优化说明

  • 原代码中每次调用index查找表头索引会产生额外遍历开销,改用enumerate提前记录索引可以把时间复杂度从O(n²)降低到O(n)
  • 列表分片的执行效率高于手动循环拼接子列表,同时代码可读性更高
  • zip(*可迭代对象)是Python原生的序列转置方法,执行效率远高于手动嵌套循环遍历

内容的提问来源于stack exchange,提问作者Saad Hasan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:57:05