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

Python中将多列表元素加入set后打印无序,无第三方库如何解决

解决方案

Python 标准内置的set类型本身不保证保留插入顺序,要同时满足元素去重、插入顺序保留的需求,不需要引入第三方库,可采用以下两种方案:

方案1:全版本兼容实现

同时维护一个用于判重的普通set,和一个用于记录插入顺序的列表,遍历所有待插入元素时仅新增未出现过的元素:

# 待合并的列表
list_a = ['#', '*']
list_b = [2, 3, 5, 6, 8]
list_c = ['o', '€']

seen = set()
ordered_result = []

# 按你需要的插入顺序遍历所有列表
for arr in [list_a, list_b, list_c]:
    for item in arr:
        if item not in seen:
            seen.add(item)
            ordered_result.append(item)

# 按预期格式输出
print("{" + ", ".join(repr(i) for i in ordered_result) + "}")

运行后输出完全匹配预期:

{'#', '*', 2, 3, 5, 6, 8, 'o', '€'}

方案2:Python 3.7+ 简化实现

Python 3.7及以上版本中,内置dict默认保留插入顺序,且key天然去重,可以直接用dict.fromkeys快速实现:

list_a = ['#', '*']
list_b = [2, 3, 5, 6, 8]
list_c = ['o', '€']

# 用dict的key实现有序去重
ordered_result = list(dict.fromkeys(item for arr in [list_a, list_b, list_c] for item in arr))
print("{" + ", ".join(repr(i) for i in ordered_result) + "}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:54:04