Python中的排序

一、列表排序

举例sort和sorted对列表排序,说明两者的区别。

import re

list1 = [0, -1, 3, -10, 5, 9]
list1.sort(reverse=False)
print('list1.sort在list1基础上修改,无返回值', list1)
list2 = [0, -1, 3, -10, 5, 9]
res = sorted(list2, reverse=False)
print('sorted有返回值是新的list', list2)
print('返回值', res)

 

对list排序,使用lambda函数从小到大排序 。

foo = [-5, 8, 0, 4, 9, -4, -20, -2, 8, 2, -4]
a = sorted(foo, key=lambda x: x)
print(a)

  使用lambda函数对list排序,输出结果为[0,2,4,8,8,9,-2,-4,-4,-5,-20],正数从小到大,负数从大到小。

foo = [-5, 8, 0, 4, 9, -4, -20, -2, 8, 2, -4]
a = sorted(foo, key=lambda x: (x < 0, abs(x)))
print(a)

 

二、列表嵌套排序

1、 列表嵌套字典排序 ,分别根据年龄和姓名排序。

foo = [{'name': 'zs', 'age': 19}, {'name': 'll', 'age': 54}, {'name': 'wa', 'age': 17}, {'name': 'df', 'age': 23}]
a = sorted(foo, key=lambda x: x['name'])  # 姓名从小到大
b = sorted(foo, key=lambda x: x['age'], reverse=True)  # 年龄从大到小
print(a)
print(b)

2、列表嵌套元祖排序 ,分别按字母和数字排序。

foo = [('zs', 19), ('ll', 54), ('wa', 17), ('df', 23)]
a = sorted(foo, key=lambda x: x[0])  # 字母从小到大
b = sorted(foo, key=lambda x: x[1], reverse=True)  # 数字从大到小
print(a)
print(b)

2、列表嵌套列表排序 ,年龄数字相同怎么办?

foo = [['zs', 19], ['ll', 54], ['wa', 17], ['df', 23], ['xf', 23]]
a = sorted(foo, key=lambda x:(x[1], x[0]))
print(a)

 三、字典排序

1、根据键对字典排序(方法一,zip函数)。

dict1 = {'name': 'zs', 'sex': 'man', 'city': 'bj'}
foo = zip(dict1.keys(), dict1.values())  # 字典转成列表嵌套元祖
a = sorted(foo, key=lambda x: x[0])
print('根据键排序', a)
new_dict = {i[0]: i[1] for i in a}
print(new_dict)

 2、根据键对字典排序(方法二,zip函数)。

dic = {'name': 'zs', 'sex': 'man', 'city': 'bj'}
print(dic.items())
b = sorted(dic.items(), key=lambda x: x[0])
print('根据键排序', b)
new_dict = {i[0]: i[1] for i in b}
print(new_dict)

小考: 根据字符串长度排序。

s = ['ab', 'abc', 'a', 'djkj']
a = sorted(s, key=lambda x: len(x))
s.sort(key=len)
print(a)
print(s)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值