如何使用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
相关产品推荐
相关产品推荐

