Python 程序设计入门(016)—— 字典的操作(3):字典的排序

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')]

猜你喜欢

转载自blog.csdn.net/weixin_44377973/article/details/132186881
今日推荐