Python教程通过公共键对不同字典进行排序示例详解

利用 operator 模块中的 itemgetter 函数对这类结构进行排序。

rows = [
{'fname': 'Brian', 'lname': 'Jones', 'uid': 1003},
{'fname': 'David', 'lname': 'Beazley', 'uid': 1002},
{'fname': 'John', 'lname': 'Cleese', 'uid': 1001},
{'fname': 'Big', 'lname': 'Jones', 'uid': 1004}
]

根据所有字典中共有的字段进行排序,字段可以是字典的键名称、用数字表示的列表元素或是任何可以传给对象的 __getitem__() 方法的值。

如果传多个标记给 itemgetter(),那么它产生的可调用对象将返回以个包含所有元素在内的元组,然后 sorted() 将根据对元组的排序结果来排序输出的结果。

from operator import itemgetter
rows_by_fname = sorted(rows, key=itemgetter('fname'))
rows_by_uid = sorted(rows, key=itemgetter('uid'))
print(rows_by_fname)
# [{'fname': 'Big', 'uid': 1004, 'lname': 'Jones'},
# {'fname': 'Brian', 'uid': 1003, 'lname': 'Jones'},
# {'fname': 'David', 'uid': 1002, 'lname': 'Beazley'},
# {'fname': 'John', 'uid': 1001, 'lname': 'Cleese'}]
print(rows_by_uid)
# [{'fname': 'John', 'uid': 1001, 'lname': 'Cleese'},
# {'fname': 'David', 'uid': 1002, 'lname': 'Beazley'},
# {'fname': 'Brian', 'uid': 1003, 'lname': 'Jones'},
# {'fname': 'Big', 'uid': 1004, 'lname': 'Jones'}]

当 itemgetter() 函数接受多个键时

rows_by_lfname = sorted(rows, key=itemgetter('lname', 'fname'))
print(rows_by_lfname)
# [{'fname': 'David', 'uid': 1002, 'lname': 'Beazley'},
# {'fname': 'John', 'uid': 1001, 'lname': 'Cleese'},
# {'fname': 'Big', 'uid': 1004, 'lname': 'Jones'},
# {'fname': 'Brian', 'uid': 1003, 'lname': 'Jones'}]

同样 itemgetter() 也适用于 min() 和 max() 函数

>>> min(rows, key=itemgetter('uid'))
{'fname': 'John', 'lname': 'Cleese', 'uid': 1001}
>>> max(rows, key=itemgetter('uid'))
{'fname': 'Big', 'lname': 'Jones', 'uid': 1004}

以上就是Python教程通过公共键对不同字典进行排序示例详解的详细内容,更多关于Python公共键对字典进行排序的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python教程按照字典的键或值进行排序方法解析

    Python sorted() 函数 sorted() 函数对所有可迭代的对象进行排序操作 sorted 语法: sorted(iterable, key=None, reverse=False) 参数说明: iterable – 可迭代对象. key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序. reverse – 排序规则,reverse = True 降序 , reverse = False 升序(默认). 1.

  • Python实现对字典分别按键(key)和值(value)进行排序的方法分析

    本文实例讲述了Python实现对字典分别按键(key)和值(value)进行排序的方法.分享给大家供大家参考,具体如下: 方法一: #使用sorted函数进行排序 ''' sorted(iterable,key,reverse),sorted一共有iterable,key,reverse这三个参数; 其中iterable表示可以迭代的对象,例如可以是dict.items().dict.keys()等 key是一个函数,用来选取参与比较的元素,reverse则是用来指定排序是倒序还是顺序,reve

  • Python利用公共键如何对字典列表进行排序详解

    前言 在程序中使用字典进行数据信息统计时,由于字典是无序的所以打印字典时内容也是无序的.因此,为了使统计得到的结果更方便查看需要进行排序.Python中字典的排序分为按"键"排序和按"值"排序.下面话不多说了,来一起看看详细的介绍吧 问题描述 我们有一个字典列表,想根据一个或多个字典中的值来对列表排序. 例如,有如下字典列表,根据字典中的x,由大到小排序这个列表: l = [{'x':1, 'y':2}, {'x':2, 'y':3}, {'x':3, 'y':4}

  • Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例

    本文实例讲述了Python通过公共键对字典列表排序算法.分享给大家供大家参考,具体如下: 问题:想根据一个或多个字典中的值来对列表排序 解决方案:利用operator模块中的itemgetter()函数对这类结构进行排序是非常简单的. # Sort a list of a dicts on a common key rows = [ {'fname': 'Brian', 'lname': 'Jones', 'uid': 1003}, {'fname': 'David', 'lname': 'Be

  • Python教程通过公共键对不同字典进行排序示例详解

    利用 operator 模块中的 itemgetter 函数对这类结构进行排序. rows = [ {'fname': 'Brian', 'lname': 'Jones', 'uid': 1003}, {'fname': 'David', 'lname': 'Beazley', 'uid': 1002}, {'fname': 'John', 'lname': 'Cleese', 'uid': 1001}, {'fname': 'Big', 'lname': 'Jones', 'uid': 100

  • Python深度学习实战PyQt5窗口切换的堆叠布局示例详解

    目录 1. 堆叠布局简介 1. 1什么是堆叠布局(Stacked Layout) 1.2 堆叠布局的实现方法 2. 创建多窗口切换的堆叠布局 3. 堆叠布局的主程序设计 3.1 QStackedWidget 类 3.2 建立信号/槽连接 3.3 页面控制程序 3.4 堆叠布局中的控件操作 软件项目中经常需要多种不同的图形界面,以适应不同的任务场景.选项卡控件(QTackedWidget)通过标签选择打开对应的对话框页面,不需要另外编程.堆叠窗口控件(QStackedWidget)在主程序中通过编

  • Python实现双X轴双Y轴绘图的示例详解

    诈尸人口回归.这一年忙着灌水忙到头都掉了,最近在女朋友的提醒下终于想起来博客的账号密码,正好今天灌水的时候需要画一个双X轴双Y轴的图,研究了两小时终于用Py实现了.找资料的过程中没有发现有系统的文章,反正代码都整理出来了,我决定顺势水一篇. 目前找到的plt实现双X轴双Y轴绘图方式有两种: 使用fig.add_subplot方式将两对坐标系叠加在一个fig上实现双X轴双Y轴效果.所有调整均可完美实现,推荐该方式 通过axes.twinx().twiny()方式实现双X轴双Y轴图形绘制.问题在于对

  • python学习笔记:字典的使用示例详解

    经典字典使用函数dict:通过其他映射(比如其他字典)或者(键,值)这样的序列对建立字典.当然dict成为函数不是十分确切,它本质是一种类型.如同list. 复制代码 代码如下: items=[('name','zhang'),('age',42)]d=dict(items)d['name'] len(d):返回项的数量d[k]:返回键k上面的值.d[k]=v:将k对应的值设置为k.del d[k]:删除字典中的这一项.k in d:检查d中是否含有键为k的项.注:只能查找键,不能查找值.简单的

  • 通过Python的filestools库给图片添加全图水印的示例详解

    目录 前言 一.filestools库简介 二.安装filestools 三.查看filestools版本 四.图片添加全图水印 1.引入库 2.添加水印 五.参数调整对比 1.水印颜色 1.1通过名称设置颜色 1.2通过RGB值设置颜色 1.3通过十六进制设置颜色 2.水印字体的大小 3.水印的透明度 4.水印直接的间隔 5.水印旋转角度 总结 前言 大家好,我是空空star,本篇给大家分享一下通过Python的filestools库给图片添加全图水印. 一.filestools库简介 fil

  • Python深度学习实战PyQt5布局管理项目示例详解

    目录 1. 从绝对定位到布局管理 1.1 什么是布局管理 1.2 Qt 中的布局管理方法 2. 水平布局(Horizontal Layout) 3. 垂直布局(Vertical Layout) 4. 栅格布局(Grid Layout) 5. 表格布局(Form Layout) 6. 嵌套布局 7. 容器布局 布局管理就是管理图形窗口中各个部件的位置和排列.图形窗口中的大量部件也需要通过布局管理,对部件进行整理分组.排列定位,才能使界面整齐有序.美观大方. 1. 从绝对定位到布局管理 1.1 什么

  • Python字典底层实现原理详解

    在Python中,字典是通过散列表或说哈希表实现的.字典也被称为关联数组,还称为哈希数组等.也就是说,字典也是一个数组,但数组的索引是键经过哈希函数处理后得到的散列值.哈希函数的目的是使键均匀地分布在数组中,并且可以在内存中以O(1)的时间复杂度进行寻址,从而实现快速查找和修改.哈希表中哈希函数的设计困难在于将数据均匀分布在哈希表中,从而尽量减少哈希碰撞和冲突.由于不同的键可能具有相同的哈希值,即可能出现冲突,高级的哈希函数能够使冲突数目最小化.Python中并不包含这样高级的哈希函数,几个重要

  • 对python列表里的字典元素去重方法详解

    如下所示: def list_dict_duplicate_removal(): data_list = [{"a": "123", "b": "321"}, {"a": "123", "b": "321"}, {"b": "321", "a": "123"}] run

  • Python遍历字典方式就实例详解

    这篇文章主要介绍了Python遍历字典方式就实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 " 记录遍历字典的几种方式" dict1={'name':'吴亦凡','age':'29','native':'广州','opus':'大碗宽面'} #遍历字典key值---方法1 for key in dict1: print(key) # 遍历字典key值---方法2 for key in dict1.keys(): print(k

  • Python教程使用Chord包实现炫彩弦图示例

    首先来介绍一下什么是弦图? 弦图主要用于展示多个对象之间的关系,连接圆上任意两点的线段叫做弦,弦(两点之间的连线)就代表着两者之间的关联关系. 弦图虽然看起来有点眼花缭乱,但是它却非常适合用户分析复杂数据的关联关系. Python中能够绘制弦图的包有一些,本篇主要介绍如何使用chord库来制作酷炫的弦图.可以查看官方文档. 在使用前需要用pip安装: pip install chord 在官方文档中很清晰地罗列了API的使用说明,API分为free和pro两个版本,其中pro版本在free的基础

随机推荐