请求技术支持:将指定格式列表转换为目标结构字典
问题描述
输入为一个列表,其中的四位数字符串(例如'1368'、'1568')作为输出字典的键,紧随其后的一位数字符串作为对应键的值(每个键对应的值是收集了所有对应后续一位数的列表)。
输入示例:
['1368', '1', '1368', '3', '1568', '1', '1568', '3', '1568', '2', '1768', '3', '1768', '2', '2368', '1', '2368', '3', '2368', '2']
输出示例:
{'1368': ['1', '3'], '1568': ['1', '3', '2'], '1768': ['3', '2'], '2368': ['1', '3', '2']}
解决方案
可以通过遍历输入列表并两两分组处理,用字典收集对应键的值列表,以下是两种实现方式:
方法一:基础循环遍历
input_list = ['1368', '1', '1368', '3', '1568', '1', '1568', '3', '1568', '2', '1768', '3', '1768', '2', '2368', '1', '2368', '3', '2368', '2'] result = {} # 以步长2遍历列表,每次获取键和对应的值 for i in range(0, len(input_list), 2): key = input_list[i] value = input_list[i+1] # 键存在则追加值,不存在则创建新列表 if key in result: result[key].append(value) else: result[key] = [value] print(result)
方法二:使用collections.defaultdict简化逻辑
from collections import defaultdict input_list = ['1368', '1', '1368', '3', '1568', '1', '1568', '3', '1568', '2', '1768', '3', '1768', '2', '2368', '1', '2368', '3', '2368', '2'] result = defaultdict(list) for i in range(0, len(input_list), 2): result[input_list[i]].append(input_list[i+1]) # 如需转为普通字典,执行:result = dict(result) print(result)
代码说明
- 两种方法均以步长2遍历输入列表,确保每次配对的是一个四位数字符串(键)和紧随其后的一位数字符串(值)。
- 基础方法通过判断键是否存在来处理列表的创建或追加;
defaultdict会自动为不存在的键创建空列表,简化了代码逻辑。
内容的提问来源于stack exchange,提问作者Youssouf
相关产品推荐
相关产品推荐

