Python实现嵌套列表去重方法示例


Posted in Python onDecember 28, 2017

发现问题

python嵌套列表大家应该都不陌生,但最近遇到了一个问题,这是工作中遇到的一个坑,首先看一下问题

raw_list = [["百度", "CPY"], ["京东", "CPY"], ["黄轩", "PN"], ["百度", "CPY"]]

列表嵌套了列表,并且有一个重复列表["百度", "CPY"],现在要求将这个重复元素进行去重(重复是指嵌套的列表内两个元素都相同),并且保证元素顺序不变,输出还是嵌套列表,即最后结果应该长这样:[["百度", "CPY"], ["京东", "CPY"], ["黄轩", "PN"]]

正常Python去重都是使用set,所以我这边也是用这种思想处理一下

In [8]: new_list = [list(t) for t in set(tuple(_) for _ in raw_list)]
In [9]: new_list
Out[9]: [['京东', 'CPY'], ['百度', 'CPY'], ['黄轩', 'PN']]

=。=以为大功告成,结果发现嵌套列表顺序变了

好吧一步步找一下是从哪边顺序变了的

In [10]: s = set(tuple(_) for _ in raw_list)
In [11]: s
Out[11]: {('京东', 'CPY'), ('百度', 'CPY'), ('黄轩', 'PN')}

恍然大悟关于set的两个关键词:无序 和 不重复 =。=

所以从set解决排序问题基本无望了,然而我还没有放弃,现在问题就变成了对于new_list怎么按照raw_list元素顺序排序,当然肯定要通过sort实现

翻一下Python文档找到以下一段话

文档地址

sort(*, key=None, reverse=False)

This method sorts the list in place, using only < comparisons between 
items. Exceptions are not suppressed - if any comparison operations  
fail, the entire sort operation will fail (and the list will likely be left in a 
 partially modified state).

 [`sort()`](https://docs.python.org/3/library/stdtypes.html?highlight=sort#list.sort "list.sort") 

accepts two arguments that can only be passed by keyword ( [keyword-only arguments](https://docs.python.org/3/glossary.html#keyword-only-parameter) ):

key specifies a function of one argument that is used to extract a 
comparison key from each list element (for example, key=str.lower). 
 The key corresponding to each item in the list is calculated once and  then used for the entire sorting process. The default value of None 
means that list items are sorted directly without calculating a separate
 key value.

开始划重点:

sort方法通过参数key指定一个方法,换句话说,key参数的值是函数。

这个函数和new_list上的每个元素会产生一个结果,sort通过这个结果进行排序。

于是这里就想到求出new_list里的每一个元素在raw_list里的索引,根据这个索引进行排序。

代码实现如下:

In [13]: new_list.sort(key=raw_list.index)
In [14]: new_list
Out[14]: [['百度', 'CPY'], ['京东', 'CPY'], ['黄轩', 'PN']]

结果和期望一样 =。=

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Java及python正则表达式详解
Dec 27 Python
Python3结合Dlib实现人脸识别和剪切
Jan 24 Python
pandas 选择某几列的方法
Jul 03 Python
CentOS7下python3.7.0安装教程
Jul 30 Python
Python给定一个句子倒序输出单词以及字母的方法
Dec 20 Python
python判断文件夹内是否存在指定后缀文件的实例
Jun 10 Python
感知器基础原理及python实现过程详解
Sep 30 Python
python实现根据给定坐标点生成多边形mask的例子
Feb 18 Python
如何在Python 游戏中模拟引力
Mar 27 Python
Python实现密钥密码(加解密)实例详解
Apr 26 Python
如何理解python接口自动化之logging日志模块
Jun 15 Python
Python爬虫中urllib3与urllib的区别是什么
Jul 21 Python
Python登录并获取CSDN博客所有文章列表代码实例
Dec 28 #Python
python 寻找优化使成本函数最小的最优解的方法
Dec 28 #Python
python机器学习案例教程——K最近邻算法的实现
Dec 28 #Python
Python实现螺旋矩阵的填充算法示例
Dec 28 #Python
wxPython的安装图文教程(Windows)
Dec 28 #Python
Python制作豆瓣图片的爬虫
Dec 28 #Python
浅谈Python使用Bottle来提供一个简单的web服务
Dec 27 #Python
You might like
php配置php-fpm启动参数及配置详解
2013/11/04 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
2017/08/17 PHP
针对PHP开发安全问题的相关总结
2019/03/22 PHP
PHP代码加密的方法总结
2020/03/13 PHP
Firefox outerHTML实现代码
2009/06/04 Javascript
jQuery MD5加密实现代码
2010/03/15 Javascript
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
js控制input输入字符解析
2013/12/27 Javascript
js实现刷新iframe的方法汇总
2015/04/27 Javascript
在JavaScript应用中实现延迟加载的方法
2015/06/25 Javascript
JS实时弹出新消息提示框并有提示音响起的实现代码
2016/04/20 Javascript
JavaScript职责链模式概述
2016/09/17 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
bootstrap响应式工具使用详解
2017/11/29 Javascript
详解Vue中数组和对象更改后视图不刷新的问题
2018/09/21 Javascript
使用webpack搭建vue环境的教程详解
2019/12/31 Javascript
基于javascript实现日历功能原理及代码实例
2020/05/07 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
2020/09/22 Javascript
Python 字典dict使用介绍
2014/11/30 Python
Python中几种导入模块的方式总结
2017/04/27 Python
Python爬虫天气预报实例详解(小白入门)
2018/01/24 Python
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
python 用opencv调用训练好的模型进行识别的方法
2018/12/07 Python
python3 requests库文件上传与下载实现详解
2019/08/22 Python
python实现大量图片重命名
2020/03/23 Python
pytorch加载自定义网络权重的实现
2020/01/07 Python
python 子类调用父类的构造函数实例
2020/03/12 Python
LTD Commodities:礼品,独特发现,家居装饰,家用器皿
2017/08/11 全球购物
澳大利亚家用电器在线商店:Billy Guyatts
2020/05/05 全球购物
SIMON MILLER官网:洛杉矶的生活方式品牌
2020/10/19 全球购物
结婚典礼证婚词
2014/01/08 职场文书
小学生期末自我鉴定
2014/01/19 职场文书
我爱祖国演讲稿
2014/09/02 职场文书
村党支部书记个人对照材料汇报
2014/10/26 职场文书
基于CSS3画一个iPhone
2021/04/21 HTML / CSS