一行代码python list 去重

本文介绍了一种使用Python的有序字典特性对列表进行去重同时保持元素原始顺序的方法,避免了传统集合去重导致的顺序混乱问题,适用于需要保持数据顺序的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前看到的的方法都是利用集合

keys = ['a', 'a', 'v', 'c', 'b', 'v', 'b']

list(set(keys))

Out: ['b', 'v', 'a', 'c']

问题:会导致去重之后list乱序.

 

注意到Python3 中dict默认是ordereddict 可以利用这一特性对list去重并保持原来的顺序

dct = {k:None for k in keys}

dct
Out: {'a': None, 'v': None, 'c': None, 'b': None}


list(dct) 
Out: ['a', 'v', 'c', 'b']
from itertools import zip_longest

dct = dict(zip_longest(keys, []))
dct
Out: {'a': None, 'v': None, 'c': None, 'b': None}

list(dct)
Out: ['a', 'v', 'c', 'b']
dct = dict.fromkeys(['a','b','c', 'a', 'x','b','x','a'])

dct
{'a': None, 'b': None, 'c': None, 'x': None}

list(dct)
Out: ['a', 'b', 'c', 'x']

​

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值