如何在Python中将列表字母数字串拆分并存储为字典键值对?
最简实现方案
嘿,这个需求用Python实现超简单的,给你两种简洁又高效的方案,看你偏好哪种:
方案一:用collections.defaultdict(推荐)
借助标准库的defaultdict,可以自动为不存在的键创建空列表,省去手动判断的麻烦:
from collections import defaultdict my_list = ["A1B2244", "B3H7654", "A1O6541", "J4777"] result = defaultdict(list) for item in my_list: # 前两个字符作为键,剩余部分作为对应的值 key = item[:2] value = item[2:] result[key].append(value) # 要是你需要普通字典类型而非defaultdict,转一下就行(可选) result = dict(result) print(result)
运行后直接得到你想要的结果:
{'A1': ['B2244', 'O6541'], 'B3': ['H7654'], 'J4': ['777']}
方案二:用普通字典的setdefault方法(无需额外导入)
如果不想导入模块,用原生字典的setdefault方法也能一行循环搞定,逻辑和上面一致:
my_list = ["A1B2244", "B3H7654", "A1O6541", "J4777"] result = {} for item in my_list: result.setdefault(item[:2], []).append(item[2:]) print(result)
补充说明
- 两种方案都是线性时间复杂度O(n),处理大规模数据也毫无压力;
- 这里默认所有字符串长度都≥2,如果你的实际数据里有更短的元素,可以加个简单判断,比如
key = item[:2] if len(item)>=2 else item,避免索引报错。
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

