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

Python中高效将list[list[str]]转为字典或键值列表的最优方法

用Python高效处理键值对列表:生成字典或分拆键/值列表

对于给定的list[list[str]]类型的键值对列表,下面是几种最符合Python风格且高效的处理方式:

一、生成聚合值的字典

方法1:使用collections.defaultdict(最推荐)

这是处理这类分组场景最直观且高效的方式,defaultdict会自动为不存在的键初始化空列表,省去手动判断的步骤:

from collections import defaultdict

input_list = [["key_1", "value_1"], ["key_1", "value_2"], ["key_1", "value_3"], ["key_1", "value_4"], ["key_2", "value_5"], ["key_2", "value_6"]]

result_dict = defaultdict(list)
for key, val in input_list:
    result_dict[key].append(val)

# 可选:转为普通字典
result_dict = dict(result_dict)

输出结果:

{"key_1": ["value_1", "value_2", "value_3", "value_4"], "key_2": ["value_5", "value_6"]}

方法2:使用普通字典的setdefault方法

如果不想引入额外模块,用原生字典的setdefault也能实现,逻辑和defaultdict类似:

input_list = [["key_1", "value_1"], ["key_1", "value_2"], ["key_1", "value_3"], ["key_1", "value_4"], ["key_2", "value_5"], ["key_2", "value_6"]]

result_dict = {}
for key, val in input_list:
    result_dict.setdefault(key, []).append(val)

二、生成分离的键列表和值列表

如果需要得到[[key1, key2], [values_list1, values_list2]]的格式,可以先生成字典,再拆分键和值:

from collections import defaultdict

input_list = [["key_1", "value_1"], ["key_1", "value_2"], ["key_1", "value_3"], ["key_1", "value_4"], ["key_2", "value_5"], ["key_2", "value_6"]]

# 先构建聚合字典
result_dict = defaultdict(list)
for key, val in input_list:
    result_dict[key].append(val)

# 拆分得到目标结构
keys = list(result_dict.keys())
values = list(result_dict.values())
result = [keys, values]

输出结果:

[["key_1", "key_2"], [["value_1", "value_2", "value_3", "value_4"], ["value_5", "value_6"]]]

性能说明

两种方法的时间复杂度都是O(n)(n为输入列表长度),属于最优复杂度。其中defaultdict在处理大量数据时,比setdefault略高效,因为它不需要每次调用方法判断键是否存在。

内容的提问来源于stack exchange,提问作者Daniel White

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:01:18