lys76 发表于 2022-6-23 23:52

保留原有数据顺序的列表除重复

本帖最后由 lys76 于 2022-6-24 15:34 编辑

集合可以除重,但会丢失数据的原有顺序
nums =

# 利用字典的键(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)

执行结果均为:



数据顺序得以有效保留

lys76 发表于 2022-7-5 10:29

nums =

# 利用字典的键(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

nums =

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
第一种方法好评,易懂!

谢谢,大家相互进步:handshake

甜萝 发表于 2022-6-24 08:52

本帖最后由 paypojie 于 2022-6-24 08:53 编辑

print(list({i for i in }))

alphagis 发表于 2022-6-24 10:48

看看学学,以后用得上

cao1124 发表于 2022-6-24 11:33

paypojie 发表于 2022-6-24 08:52


你这个还是修改了原本排序,还不如直接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

paypojie 发表于 2022-6-24 08:52


牛啊,学习到了。遍历放进集合,集合自动去重,然后再转换为list
页: [1] 2
查看完整版本: 保留原有数据顺序的列表除重复