gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例讲述了Python通过公共键对字典列表排序算法。分享给大家供大家参考,具体如下:

问题:想根据一个或多个字典中的值来对列表排序 。

解决方案:利用operator模块中的itemgetter()函数对这类结构进行排序是非常简单的.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Sort a list of a dicts on a common key
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 }
]
from operator import itemgetter
rows_by_fname = sorted (rows, key = itemgetter( 'fname' ))
rows_by_uid = sorted (rows, key = itemgetter( 'uid' ))
from pprint import pprint
print ( "Sorted by fname:" )
pprint(rows_by_fname) #pprint模块的pprint()提供了打印出任何python数据结构类和方法。
print ( "Sorted by uid:" )
pprint(rows_by_uid)
rows_by_lfname = sorted (rows, key = itemgetter( 'lname' , 'fname' ))
print ( "Sorted by lname,fname:" )
pprint(rows_by_lfname)
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
>>> = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = RESTART = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
>>>
Sorted by fname:
[{ 'fname' : 'Big' , 'lname' : 'Jones' , 'uid' : 1004 },
  { 'fname' : 'Brian' , 'lname' : 'Jones' , 'uid' : 1003 },
  { 'fname' : 'David' , 'lname' : 'Beazley' , 'uid' : 1002 },
  { 'fname' : 'John' , 'lname' : 'Cleese' , 'uid' : 1001 }]
Sorted by uid:
[{ 'fname' : 'John' , 'lname' : 'Cleese' , 'uid' : 1001 },
  { 'fname' : 'David' , 'lname' : 'Beazley' , 'uid' : 1002 },
  { 'fname' : 'Brian' , 'lname' : 'Jones' , 'uid' : 1003 },
  { 'fname' : 'Big' , 'lname' : 'Jones' , 'uid' : 1004 }]
Sorted by lname,fname:
[{ 'fname' : 'David' , 'lname' : 'Beazley' , 'uid' : 1002 },
  { 'fname' : 'John' , 'lname' : 'Cleese' , 'uid' : 1001 },
  { 'fname' : 'Big' , 'lname' : 'Jones' , 'uid' : 1004 },
  { 'fname' : 'Brian' , 'lname' : 'Jones' , 'uid' : 1003 }]
>>>

补充说明:

有时候会利用lambda表达式来取代itemgetter()的功能:但是利用itemgetter()会运行的更快一些,所以考虑性能的话,应该使用itemgetter().

?
1
2
rows_by_fname = sorted (rows, key = lambda r:r[ 'fname' ])
rows_by_uid = sorted (rows, key = lambda r:r[ 'uid' ])

最后,本节展示的技术同样适用于min()和max()这样的函数:

?
1
2
3
4
5
6
7
>>> min (rows, key = itemgetter( 'uid' ))
{ 'lname' : 'Cleese' , 'fname' : 'John' , 'uid' : 1001 }
>>> max (rows, key = itemgetter( 'uid' ))
{ 'lname' : 'Jones' , 'fname' : 'Big' , 'uid' : 1004 }
>>> itemgetter( 'uid' )
<operator.itemgetter object at 0x023532F0 >
>>>

(代码摘自《Python Cookbook》) 。

希望本文所述对大家Python程序设计有所帮助.

原文链接:http://www.cnblogs.com/apple2016/p/5747116.html 。

最后此篇关于Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例的文章就讲到这里了,如果你想了解更多关于Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com