利用Python 内置函数 sorted 对字典的键或者值进行排序,首先来了解下 sorted 函数
sorted(iterable, key=None, reverse=False)
参数说明:
- iterable -- 可迭代对象
- key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
代码演示:
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 进行排序
sorted(d.items(), key=lambda i:i[1])
#结果:
[('d', 1), ('c', 2), ('b', 3), ('a', 4)]
通过某个关键字排序一个字典列表
通过使用 operator 模块的 itemgetter 函数,可以非常容易的排序这样的数据结构,代码如下:
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,比如下面的代码:
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}]
以上就是字典排序相关的。