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

请求技术支持:将指定格式列表转换为目标结构字典

问题描述

输入为一个列表,其中的四位数字符串(例如'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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:05:32