前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python字典排序

python字典排序

作者头像
雷子
发布2024-03-25 16:56:35
870
发布2024-03-25 16:56:35
举报

利用Python 内置函数 sorted 对字典的键或者值进行排序,首先来了解下 sorted 函数

sorted(iterable, key=None, reverse=False)

参数说明:

代码语言:javascript
复制
- iterable -- 可迭代对象
- key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

代码演示:

代码语言:javascript
复制
d = {'b':3,'a':4,'c':2,'d':1}
d.items()
#结果:
dict_items([('b', 3), ('a', 4), ('c', 2), ('d', 1)])
sorted(d.items(), key=lambda i:i[0])
#结果

[('a', 4), ('b', 3), ('c', 2), ('d', 1)]

按照 value 进行排序

代码语言:javascript
复制
sorted(d.items(), key=lambda i:i[1])
#结果:
[('d', 1), ('c', 2), ('b', 3), ('a', 4)]

通过某个关键字排序一个字典列表

通过使用 operator 模块的 itemgetter 函数,可以非常容易的排序这样的数据结构,代码如下:

代码语言:javascript
复制
from operator import itemgetter
name=[{'name': 'Big', 'lname': 'Jones', 'uid': 1004},
 {'name': 'Brian', 'lname': 'Jones', 'uid': 1003},
 {'name': 'David', 'lname': 'Beazley', 'uid': 1002},
 {'name': 'John', 'lname': 'Cleese', 'uid': 1001}]
rows_by_fname = sorted(name, key=itemgetter('name'))
print(rows_by_fname)
#结果:
[{'name': 'Big', 'lname': 'Jones', 'uid': 1004}, 
{'name': 'Brian', 'lname': 'Jones', 'uid': 1003},
 {'name': 'David', 'lname': 'Beazley', 'uid': 1002}, 
 {'name': 'John', 'lname': 'Cleese', 'uid': 1001}]
 #根据uid排序
 rows_by_fname = sorted(name, key=itemgetter('uid'))
 #结果:
 [{'name': 'John', 'lname': 'Cleese', 'uid': 1001},
  {'name': 'David', 'lname': 'Beazley', 'uid': 1002}, 
  {'name': 'Brian', 'lname': 'Jones', 'uid': 1003}, 
 {'name': 'Big', 'lname': 'Jones', 'uid': 1004}]
 

itemgetter() 函数也支持多个 keys,比如下面的代码:

代码语言:javascript
复制
rows_by_lfname = sorted(name, key=itemgetter('lname','name'))
#结果:
[{'name': 'John', 'lname': 'Cleese', 'uid': 1001}, 
{'name': 'David', 'lname': 'Beazley', 'uid': 1002}, 
{'name': 'Brian', 'lname': 'Jones', 'uid': 1003}, 
{'name': 'Big', 'lname': 'Jones', 'uid': 1004}]

以上就是字典排序相关的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雷子说测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档