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

如何批量对多个列表应用set()函数?附DataFrame转字典去重方案

如何批量将多个列表转换为集合去重?

我尝试将set()函数应用于多个列表对象,示例列表如下:

test_lst1 = ['a','b','c','d','e','b','e']
test_lst2 = ['z','x','y','z']

我想实现类似如下逻辑的操作(伪代码):

for x in range(2):
    test_lst{x} = set(test_lst{x})

请问该如何实现?

补充说明
我已决定将DataFrame转换为字典,通过循环为每个列赋值并去除重复项,代码如下:

test_dict = {}
for col in test_df :
    test_dict[col] = test_df[col].unique()

针对多列表批量转集合的解决方案

Python不建议直接通过拼接变量名的方式动态操作变量,推荐用容器(列表/字典)统一管理,更规范易维护:

方法1:用列表统一处理

把所有目标列表存入一个列表,通过列表推导式批量转换:

test_lst1 = ['a','b','c','d','e','b','e']
test_lst2 = ['z','x','y','z']

# 存入容器列表
target_lists = [test_lst1, test_lst2]
# 批量转换为集合
processed_sets = [set(lst) for lst in target_lists]

# 如需回写原变量
test_lst1, test_lst2 = processed_sets

方法2:用字典映射变量名

如果需要保留原变量名的关联,用字典存储更清晰:

test_lst1 = ['a','b','c','d','e','b','e']
test_lst2 = ['z','x','y','z']

# 构建变量名与列表的映射
lst_mapping = {
    'test_lst1': test_lst1,
    'test_lst2': test_lst2
}

# 循环转换为集合
for name in lst_mapping:
    lst_mapping[name] = set(lst_mapping[name])

# 访问转换后的集合:lst_mapping['test_lst1']

针对DataFrame转字典去重的优化

你的现有思路可行,还可以用字典推导式简化代码,更简洁高效:

test_dict = {col: test_df[col].unique() for col in test_df}

如果需要集合而非unique()返回的numpy数组,可修改为:

test_dict = {col: set(test_df[col].dropna()) for col in test_df}

dropna()用于排除空值,可根据需求决定是否添加。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 13:27:07