吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2169|回复: 15
收起左侧

[Python 转载] 保留原有数据顺序的列表除重复

[复制链接]
lys76 发表于 2022-6-23 23:52
本帖最后由 lys76 于 2022-6-24 15:34 编辑

集合可以除重,但会丢失数据的原有顺序
[Python] 纯文本查看 复制代码
nums = [10, 2, 3, 21, 10, 3]

# 利用字典的键(key)不能重复的特点除重,然后强制转list
my_dict = {i: None for i in nums}
print(list(my_dict))

# 利用有序字典除重

from collections import OrderedDict

nums1 = list(OrderedDict.fromkeys(nums).keys())
print(nums1)


执行结果均为:

[10, 2, 3, 21]
[10, 2, 3, 21]
数据顺序得以有效保留

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
qazmc1314 + 1 + 1 谢谢@Thanks!
waweiggfnh + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| lys76 发表于 2022-7-5 10:29
[Python] 纯文本查看 复制代码
nums = [10, 2, 3, 21, 10, 3]

# 利用字典的键(key)不能重复的特点除重,然后强制转list
# my_dict = {i: None for i in nums}
my_dict = dict.fromkeys(nums)  # 今天学到fromkeys构建字典,不指定值时,默认None
print(list(my_dict))
话痨司机啊 发表于 2022-6-24 23:45
[Python] 纯文本查看 复制代码
nums = [10, 2, 3, 21, 10, 3]

num_bak = []
for i in nums:
    if i not in num_bak:
        num_bak.append(i)
        
print(num_bak)
wkdxz 发表于 2022-6-24 07:37
 楼主| lys76 发表于 2022-6-24 08:35
wkdxz 发表于 2022-6-24 07:37
第一种方法好评,易懂!

谢谢,大家相互进步
甜萝 发表于 2022-6-24 08:52
本帖最后由 paypojie 于 2022-6-24 08:53 编辑

[Python] 纯文本查看 复制代码
print(list({i for i in [10, 2, 3, 21, 10, 3]}))
alphagis 发表于 2022-6-24 10:48
看看学学,以后用得上
cao1124 发表于 2022-6-24 11:33

你这个还是修改了原本排序,还不如直接set(nums)
stoner 发表于 2022-6-24 14:37
第一种方法适用于3.x后, 忘了哪个版本开始的了, 之前的字典是无序的
stoner 发表于 2022-6-24 14:38
cao1124 发表于 2022-6-24 11:33
你这个还是修改了原本排序,还不如直接set(nums)

新版 python 的字典是有序的.
cao1124 发表于 2022-6-24 15:04
stoner 发表于 2022-6-24 14:38
新版 python 的字典是有序的.

嗯,但是要像楼主第一种方式,把list的值作为dict的key去重,所以要给i一个value,四楼的没赋值就不得行。
mrliu133 发表于 2022-6-24 15:20

牛啊,学习到了。遍历放进集合,集合自动去重,然后再转换为list
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 06:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表