Python 程序设计入门(016)—— 字典的操作(3):字典的排序
目录
一、sorted() 函数
sorted() 函数可以根据提供的函数和升降序标志对可迭代对象进行排序。sorted() 函数的语法格式如下:
sorted(可迭代对象, key = 函数名, reverse = False/True)
说明:
(1)key:设置排序依据。通常可以按函数返回排序的依据,再把函数名绑定给 key。
(2)reverse:排序方向。默认为 False,表示升序排列。设置为 True 时,表示降序排列。
例如:
test = ["107","88","211","985","1234","6879","55"]
print(sorted(test)) # 按照字符串升序排列
print(sorted(test, key=int)) # 按照整数升序排列
print(sorted(test, key=lambda x:int(x))) # 按照整数升序排列
print(sorted(test, key=int, reverse=True)) # 按照整数降序排列
lang = ["Java","Python","JavaScript","C#","PHP"]
print(sorted(lang))
print(sorted(lang,key=len)) # 按字符串长度排序
print(sorted(lang,key=lambda x:len(x),reverse=True)) # 按字符串长度降序排列
运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
['107', '1234', '211', '55', '6879', '88', '985']
['55', '88', '107', '211', '985', '1234', '6879']
['55', '88', '107', '211', '985', '1234', '6879']
['6879', '1234', '985', '211', '107', '88', '55']
['C#', 'Java', 'JavaScript', 'PHP', 'Python']
['C#', 'PHP', 'Java', 'Python', 'JavaScript']
['JavaScript', 'Python', 'Java', 'PHP', 'C#']
二、直接对字典排序
使用 sorted() 函数可以直接对字典排序,排序后生成的是只包含字典键的列表,默认按键的升序排列,如果要按键的降序排列,设置参数 reverse 为 True 即可。
例如:
test = {
12:"Tom",102:"Jerry",88:"Jack",125:"Mark",27:"Black",35:"White"}
item1 = sorted(test)
print(type(item1))
print(item1)
print(sorted(test,reverse=True)) # 降序排列
运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
<class 'list'>
[12, 27, 35, 88, 102, 125]
[125, 102, 88, 35, 27, 12]
三、对字典的键(key)或值(value)排序
对字典的键或值排序,排序后生成的是只包含字典的键或值的列表,默认按升序排列,如果要按键的降序排列,设置参数 reverse 为 True 即可。
例如:
扫描二维码关注公众号,回复:
16730206 查看本文章
test = {
12:"Tom",102:"Jerry",88:"Jack",125:"Mark",27:"Black",35:"White"}
item1 = sorted(test.keys()) # 按字典的键排序
print(type(item1))
print(item1)
item2 = sorted(test.values()) # 按字典的值排序
print(type(item2))
print(item2)
运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
<class 'list'>
[12, 27, 35, 88, 102, 125]
<class 'list'>
['Black', 'Jack', 'Jerry', 'Mark', 'Tom', 'White']
四、对字典的键值对(item)排序
(1)对字典的键值对(items)排序时,默认按键(key)升序排序(如果要按键的降序排列,设置参数 reverse 为 True 即可),输出包含键和值的列表,列表内的键和值以元组形式呈现。
例如:
test = {
12:"Tom",102:"Jerry",88:"Jack",125:"Mark",27:"Black",35:"White"}
item1 = sorted(test.items()) # 按字典的键排序
print(type(item1))
print(item1)
运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
<class 'list'>
[(12, 'Tom'), (27, 'Black'), (35, 'White'), (88, 'Jack'), (102, 'Jerry'), (125, 'Mark')]
(2)如果要按字典的值排序,可以使用匿名函数 lambda 设置排序字典为值。
例如:
test = {
12:"Tom",102:"Jerry",88:"Jack",125:"Mark",27:"Black",35:"White"}
item1 = sorted(test.items(),key=lambda x:x[1]) # 按字典的值排序
print(type(item1))
print(test)
print(item1)
运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
<class 'list'>
{
12: 'Tom', 102: 'Jerry', 88: 'Jack', 125: 'Mark', 27: 'Black', 35: 'White'}
[(27, 'Black'), (88, 'Jack'), (102, 'Jerry'), (125, 'Mark'), (12, 'Tom'), (35, 'White')]
五、将字典转换为列表进行排序
将字典的键值对转换为列表,然后通过 sorted() 或 sort() 函数以及 lambda 函数进行排序。
例如:
test = {
12:"Tom",102:"Jerry",88:"Jack",125:"Mark",27:"Black",35:"White"}
list1 = list(test.items())
print(sorted(list1,key=lambda x:x[1]))
运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
[(27, 'Black'), (88, 'Jack'), (102, 'Jerry'), (125, 'Mark'), (12, 'Tom'), (35, 'White')]
转换为列表后可以使用列表的 sort() 方法排序。
例如:
test = {
12:"Tom",102:"Jerry",88:"Jack",125:"Mark",27:"Black",35:"White"}
list1 = list(test.items())
list1.sort(key=lambda x:x[1])
print(list1)
运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
[(27, 'Black'), (88, 'Jack'), (102, 'Jerry'), (125, 'Mark'), (12, 'Tom'), (35, 'White')]