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'}