发现问题

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中列表的嵌套是指列表的元素是另一个列表_Python实现嵌套列表去重方法示例...相关推荐

  1. python中列表实现去重使用_Python实现嵌套列表去重方法示例

    发现问题 python嵌套列表大家应该都不陌生,但最近遇到了一个问题,这是工作中遇到的一个坑,首先看一下问题 raw_list = [["百度", "CPY"] ...

  2. python去重且顺序不变_Python实现嵌套列表去重方法示例

    发现问题 python嵌套列表大家应该都不陌生,但最近遇到了一个问题,这是工作中遇到的一个坑,首先看一下问题 raw_list = [["百度", "CPY"] ...

  3. python中集合的元素可以是任意数据类型_Python数据类型之列表

    列表 列表是由一系列按特定循序排列的元素组成(即有序集合).使用中括号[]来表示,并用逗号来分隔其中的元素. 列表的元素可以是任意类型. list 列表(序列)中的每个元素都分配一个数字索引,从 0 ...

  4. python 中画球体_Matplotlib/basemap:在p的中心绘制一个球体

    我试图在python中找出如何使用basemap来绘制如下图: 聚焦于左上角的图,这是一个二维的密度直方图,每个箱子的中心都有一个地球图形.在 我面临的最大问题是,基本地图并没有发挥出很好的作用.我可 ...

  5. python中的且的符号and用两个和用一个的区别_Python 中的 or and 运算,看这一篇就够...

    问题出现: Python 中的 or,and 运算,可以写出比较复杂的演算表达式: 看了一些大神的演算规则解释,觉得不是很好理解,有些人甚至理解错了规则. 这里聊一下自己的理解. 其他人是怎么做的: ...

  6. 用python倒序输出一个字符串_Python 反转字符串(reverse)的方法小结

    前段时间看到letcode上的元音字母字符串反转的题目,今天来研究一下字符串反转的内容.主要有三种方法: 1.切片法(最简洁的一种) #切片法 def reverse1(): s=input(&quo ...

  7. python继承编程教程_Python实现通过继承覆盖方法示例

    本文实例讲述了Python实现通过继承覆盖方法.分享给大家供大家参考,具体如下: Python真是太动态了,所有的方法默认都是虚的.子类定义父类同名函数之后,父类函数被覆盖. class P(obje ...

  8. python怎么引入thrift文件_python使用thrift教程的方法示例

    一.前言: Thrift 是一种接口描述语言和二进制通信协议.以前也没接触过,最近有个项目需要建立自动化测试,这个项目之间的微服务都是通过 Thrift 进行通信的,然后写自动化脚本之前研究了一下. ...

  9. python中语法错误-python中的语法错误是指什么

    很多时候我们在写代码的时候,可能都会遇到代码没有提示错误,但输出结果会报错,这个时候我们就需要根据提示信息来解决这些问题,下面我们一起来学习一下. 1:TypeError: must be str, ...

  10. abaqus利用python实现部件合并_在abaqus python中使用Element()构造函数创建部件元素...

    我不能用Abaqus中Part对象的Element()构造函数创建元素.Node()构造函数没有问题,但是当您尝试使用以前生成的节点创建元素时,它会向您显示以下错误警告: 在运行脚本之前,部件网格在A ...

最新文章

  1. SpringCloud Eureka Client和Server侧配置及Eureka高可用配置
  2. 脑电数据的Epoching处理
  3. java的封装性_Java10-java语法基础(九)——java的封装性
  4. 使用缓冲字节流:BufferedInputStream与BufferedOutputStream读写数据
  5. android edittext 手机号码,Android中EditText中的电话号码格式
  6. 单片机应用中的c语言用词注解,单片机C语言程序注解
  7. 使用MediaCodec硬解码h.265视频及音频进行播放
  8. 我可以隐藏HTML5号码输入的旋转框吗?
  9. php 类里面 session,session类方法
  10. 计算机网络苏州大学题库,苏州大学计算机网络样卷B[计科大类].doc
  11. Mac苹果电脑Matlab2018a和2020a下载及安装(linux和win也有,但是没试)
  12. 合作、竞争、猜忌……车联网江湖的“战国时代”
  13. 爬虫实战:遇上gb2312编码的网页
  14. 北京50年代到90年代的春节老照片,终于找全了!
  15. RNA 3. SCI 文章中基于TCGA 差异表达基因之 DESeq2
  16. Flutter时间轴
  17. DNS和Web服务的配置与访问
  18. oracle建表备份数据,oracle建表备份脚本,如果update的数据不对,可以从WEB_RI_PLYEDR_CED_BAK找回...
  19. 给中年工程师的忠告 转自前辈工程师 “嵌入式玩家”
  20. Checkmarx-简单了解记录

热门文章

  1. ZJOI 2008 瞭望塔 三分法
  2. [转]正确设置nginx/php-fpm/apache权限
  3. 52. N-Queens II (Array; Back-Track)
  4. ActivityGroup和TabActiviy的差异性?
  5. Gravatar是什么?全球通用头像简单介绍与使用教程
  6. java给方法参数赋值_java方法参数的赋值问题实例源码介绍
  7. 拓端tecdat|基于matlab的Lorenz系统仿真可视化
  8. 使用qume启动虚拟机的时候出现:“启动域时出错: Requested operation is not valid: network ‘default‘ is not active”
  9. (8)数据结构-循环队列
  10. 【C/C++】size_t 数据类型