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

如何将Python字典列表转换为按表分类的去重逗号分隔字符串

解决方案

首先纠正你代码里的问题:Message是列表类型,不是字典,所以不能调用.items()方法,这是你无法继续的核心原因。

下面是两种可行的实现方式,都能完成分组、去重并生成目标字符串:


方法1:使用普通字典手动分组

# 你的原始数据
Message = [
    {"table_name": "sec_sp", "column_name": "field_1"},
    {"table_name": "sec_sp", "column_name": "field_2"},
    {"table_name": "sec_si", "column_name": "field_3"},
    {"table_name": "sec_si", "column_name": "field_4"},
    {"table_name": "sec_sp", "column_name": "field_5"},
    {"table_name": "sec_sc", "column_name": "field_6"},
    {"table_name": "sec_sc", "column_name": "field_7"},
    # 可添加重复字段测试去重效果
    {"table_name": "sec_sp", "column_name": "field_1"}
]

# 初始化空字典用于分组
grouped = {}

for item in Message:
    table = item["table_name"]
    field = item["column_name"]
    # 表名不在字典里时,创建空集合(自动去重)
    if table not in grouped:
        grouped[table] = set()
    # 添加字段到对应集合
    grouped[table].add(field)

# 转换为逗号分隔的字符串,提取表名后缀作为变量名
sp_list = ",".join(sorted(grouped["sec_sp"]))
si_list = ",".join(sorted(grouped["sec_si"]))
sc_list = ",".join(sorted(grouped["sec_sc"]))

# 输出结果
print(f"sp_list = \"{sp_list}\"")
print(f"si_list = \"{si_list}\"")
print(f"sc_list = \"{sc_list}\"")

方法2:使用collections.defaultdict简化代码

defaultdict可以自动处理键不存在的情况,代码更简洁:

from collections import defaultdict

# 原始数据同上,省略...

# 初始化默认值为集合的字典
grouped = defaultdict(set)

for item in Message:
    # 直接添加字段,无需判断键是否存在
    grouped[item["table_name"]].add(item["column_name"])

# 生成目标字符串
sp_list = ",".join(sorted(grouped["sec_sp"]))
si_list = ",".join(sorted(grouped["sec_si"]))
sc_list = ",".join(sorted(grouped["sec_sc"]))

# 输出
print(f"sp_list = \"{sp_list}\"")
print(f"si_list = \"{si_list}\"")
print(f"sc_list = \"{sc_list}\"")

关键说明:

  1. 去重逻辑:用set(集合)存储字段,自动忽略重复值,用sorted()可保证字段顺序和示例一致。
  2. 分组逻辑:以table_name为键,把同表的字段归集到一起。
  3. 字符串拼接:用str.join()方法把集合/列表里的字段用逗号连接成字符串。

执行后输出结果:

sp_list = "field_1,field_2,field_5"
si_list = "field_3,field_4"
sc_list = "field_6,field_7"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 06:04:58