如何对python列表元素快速去重,方法都在这里了

2022-10-04 08:06:48


北京冬奥会最近正如火如荼地展开着,本届冬奥会吉祥物冰墩墩(BingDwenDwen)因为其萌萌憨憨的熊猫造型,成功火遍海内外。

聊完吉祥物,我们再聊回工作。很多时候,我们给定一个txt或者Excel文件接收用户的输入参数,但是由于用户输入端不受控,很可能我们拿到文件,解析后的某个字段有很多重复项,那么在具体业务前对数据进行去重就显得非常必要。

具体到列表的快速去重这一朴素的需求,我们有哪些方法呢?

方法一:利用列表特性,遍历列表元素来实现


In [1]: original_list=[3,7,4,4,3,2,1]

In [2]: result_list=[]

In [3]: for element in original_list:
   ...:     if element not in result_list:
   ...:         result_list.append(element)
   ...:

In [4]: print(result_list)
[3, 7, 4, 2, 1]

方法二:用python的字典结构实现去重

    我们都知道,字典的键(key)默认不能重复,如果对一个字典的键(key)反复赋值(value),最终保留的永远是最后存入的键值对。我们不妨利用字典这个特性,最终将字典的key存入新的列表即可。

In [5]: original_list=[3,7,4,4,3,2,1]

In [6]: my_dic=dict.fromkeys(original_list)

In [7]: print(my_dic)
{3: None, 7: None, 4: None, 2: None, 1: None}

In [8]: result_list=list(my_dic)

In [9]: print(result_list)
[3, 7, 4, 2, 1]

方法三:利用集合(set)来去重

我们知道,集合的一个关键特性就是元素中没有重复项,用它来去重后再转为列表,再合适不过了。


In [10]: original_list=[3,7,4,4,3,2,1]

In [11]: my_set=set(original_list)

In [12]: print(my_set)
{1, 2, 3, 4, 7}

In [13]: result_list=list(my_set)

In [14]: print(result_list)
[1, 2, 3, 4, 7]

通过对比三种方法不难发现,方法二和方法三实际都可以借助一行代码快速实现,但是仅有方法一可以保留列表原先的元素排序,可谓各有优劣,我们只需要根据业务要求来选择恰当的方法即可。

想领取更多完整源码以及Python相关讨论学习可点击这行

  • 作者:车厘子@
  • 原文链接:https://blog.csdn.net/L010409/article/details/122842198
    更新时间:2022-10-04 08:06:48