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

 更新时间:2021年09月29日 09:49:25   作者:沉沉沉小姐  
本篇文章是Python教程基础篇,通过一些示例为大家讲解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公共键对字典进行排序的资料请关注脚本之家其它相关文章!

相关文章

  • torch.optim优化算法理解之optim.Adam()解读

    torch.optim优化算法理解之optim.Adam()解读

    这篇文章主要介绍了torch.optim优化算法理解之optim.Adam()解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Java多线程实现四种方式原理详解

    Java多线程实现四种方式原理详解

    这篇文章主要介绍了Java多线程实现四种方式原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • python  ceiling divide 除法向上取整(或小数向上取整)的实例

    python ceiling divide 除法向上取整(或小数向上取整)的实例

    今天小编就为大家分享一篇python ceiling divide 除法向上取整 (或小数向上取整)的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python数据结构之双向链表详解

    Python数据结构之双向链表详解

    单链表只有一个指向直接后继的指针来表示结点间的逻辑关系,可以方便的从任一结点开始查找其后继结点,但要找前驱结点则比较困难,双向链表是为了解决这一问题,使用两个指针表示结点间的逻辑关系。本文将重点为大家介绍双向链表的相关操作,需要的可以参考一下
    2022-01-01
  • Keras SGD 随机梯度下降优化器参数设置方式

    Keras SGD 随机梯度下降优化器参数设置方式

    这篇文章主要介绍了Keras SGD 随机梯度下降优化器参数设置方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python选择排序、冒泡排序、合并排序代码实例

    Python选择排序、冒泡排序、合并排序代码实例

    这篇文章主要介绍了Python选择排序、冒泡排序、合并排序代码实例,本文直接给出实现代码,需要的朋友可以参考下
    2015-04-04
  • python如何利用turtle绘制正方形

    python如何利用turtle绘制正方形

    这篇文章主要介绍了python如何利用turtle绘制正方形,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Python实现二分查找算法实例

    Python实现二分查找算法实例

    这篇文章主要介绍了Python实现二分查找算法,实例分析了二分查找算法的原理与相关实现技巧,需要的朋友可以参考下
    2015-05-05
  • Python列表(List)知识点总结

    Python列表(List)知识点总结

    在本篇文章中小编给大家分享了关于Python列表(List)知识点一直对应的实例内容,需要的朋友们学习下。
    2019-02-02
  • Python自动化测试工具Splinter简介和使用实例

    Python自动化测试工具Splinter简介和使用实例

    这篇文章主要介绍了Python自动化测试工具Splinter简介和使用实例,Splinter可以非常棒的模拟浏览器的行为,Splinter提供了丰富的API,可以获取页面的信息判断当前的行为所产生的结果
    2014-05-05

最新评论