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

如何使用Python将非结构化字典字符串列表转换为结构化字典列表

实现方案

你当前的输入是每个元素为类JSON但用=分隔键值的字符串列表,仅需要对每个字符串做简单字符处理即可转换为标准Python字典列表。另外你给出的预期输出里字典用=分隔属于语法错误,Python字典标准使用冒号分隔键值,以下代码生成的是符合Python语法、可直接使用的标准字典结构。


完整代码示例

# 你的原始输入列表
raw_list = [
    '{end_date=2021-09-16 06:00:00, number=CHG1757, requested_by=Tom, cmdb_ci=Checkout, start_date=2021-09-16 03:00:00}',
    '{end_date=2021-09-16 09:00:00, number=CHG17486, requested_by=Bobby, cmdb_ci=Reservation, start_date=2021-09-16 03:00:00}',
    '{end_date=2021-09-16 12:00:00, number=CHG17441, requested_by=Ryan, cmdb_ci=Payment, start_date=2021-09-16 03:00:00}'
]

# 转换逻辑(写法1:可读性更高)
result = []
for item in raw_list:
    # 去除字符串首尾的大括号
    content = item.strip('{}')
    # 按逗号分割为独立键值对,同时去除每个片段前后空格
    kv_pairs = [pair.strip() for pair in content.split(',')]
    # 逐个转换键值对存入字典
    item_dict = {}
    for kv in kv_pairs:
        # 仅按第一个=分割,避免值本身包含=时出现报错
        key, value = kv.split('=', 1)
        item_dict[key.strip()] = value.strip()
    result.append(item_dict)

# 转换逻辑(写法2:更简洁的列表推导式)
# result = [
#     dict(kv.strip().split('=', 1) for kv in item.strip('{}').split(','))
#     for item in raw_list
# ]

# 打印验证结果
print(result)

输出结果

运行上述代码后得到的结构化字典列表如下:

[
    {'end_date': '2021-09-16 06:00:00', 'number': 'CHG1757', 'requested_by': 'Tom', 'cmdb_ci': 'Checkout', 'start_date': '2021-09-16 03:00:00'},
    {'end_date': '2021-09-16 09:00:00', 'number': 'CHG17486', 'requested_by': 'Bobby', 'cmdb_ci': 'Reservation', 'start_date': '2021-09-16 03:00:00'},
    {'end_date': '2021-09-16 12:00:00', 'number': 'CHG17441', 'requested_by': 'Ryan', 'cmdb_ci': 'Payment', 'start_date': '2021-09-16 03:00:00'}
]

如果确实需要输出你示例里用=分隔的字符串格式,只需对生成的字典再做字符串格式化即可,日常开发中标准字典格式更方便后续取值、过滤等操作。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:09:03