07 python 字典的排序方式

sorted() 函数

基本语法

sorted(iterable,cmp=None,Key=None,reverse=False)

有四个参数

  • iterable:可迭代对象
  • cmp:比较的函数,这个具有两个参数,参数的值都是可迭代对象中取出,此函数必须遵循的规则为,大于则返回1,小于则返回-1,等于则返回0
  • key:主要进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse:排序规则,reverse =True降序,reverse = False升序(默认)

返回值

返回重新排序的列表

实例

我们定义一个列表包含字典的列表

# 定义一个列表包含字典的列表
alist = [{'name':'a','age':20},{'name':'b','age':30},{'name':'c','age':25}]

# 使用age进行排序
blist = sorted(alist,key=lambda x:x['age'],reverse = True)

print(blist)

输出结果

[{'name': 'b', 'age': 30}, {'name': 'c', 'age': 25}, {'name': 'a', 'age': 20}]

我们再看一个例子

# 定义一个字典
dict1 = {'name':'zs','age':18,'city':'sz','tel':'13902399999'}

# 根据键从小到大排序
# dict1.items()的作用是将字典的键和值取出来,变成一个元祖
# lambda x:x[0] 是一个函数,作用是取值列表中索引下标为0的值
# sorted排序后,新建一个新的列表
dict2 = sorted(dict1.items(),key=lambda x:x[0])

# 我们排序出来的是列表,我们将列表转换成字典
dict3 = dict(dict2)
print(dict3)

运行结果

{'age': 18, 'city': 'sz', 'name': 'zs', 'tel': '13902399999'}

字典排序方式总结

# 有一个字典,我们要对它进行排序
dict1 = {'name':'zs','sex':'man','city':'guangzhou'}

# 步骤一:将字典转换成列表嵌套元祖

# 将字典转换成列表嵌套元祖
# 方法一
dict2 = zip(dict1.keys(),dict1.values())
dict3 = [x for x in dict2]
print(dict3)
# 将字典转换成列表嵌套元祖
# 方法二
dict4 = dict1.items()
print(dict4)

# 步骤二:将列表进行排序
dict5 = sorted(dict3,key=lambda x:x[0])
print(dict5)

dict6 = sorted(dict4,key=lambda x:x[0])
print(dict6)

# 步骤三:将列表转换为字典

# 将列表转换为字典
# 方法一
dict7 = dict(dict6)
print(dict7)

# 将列表转换为字典
# 方法二
dict8 = {}
for i in dict6:
    # 左边为键,右边为值
    dict8[i[0]] = i[1]
print(dict8)

# 将列表转换为字典
# 方法三
dict9 = {i[0]:i[1] for i in dict6}
print(dict9)

运行结果

[('name', 'zs'), ('sex', 'man'), ('city', 'guangzhou')]
dict_items([('name', 'zs'), ('sex', 'man'), ('city', 'guangzhou')])
[('city', 'guangzhou'), ('name', 'zs'), ('sex', 'man')]
[('city', 'guangzhou'), ('name', 'zs'), ('sex', 'man')]
{'city': 'guangzhou', 'name': 'zs', 'sex': 'man'}
{'city': 'guangzhou', 'name': 'zs', 'sex': 'man'}
{'city': 'guangzhou', 'name': 'zs', 'sex': 'man'}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值