python-sorted函数

sorted

sorted为内置函数,为iterable排序, 返回一个新的列表
sorted(iterable, /, *, key=None, reverse=False)
key 指定带有单个参数的函数,用于从iterable的每个元素中提取用于比较的键,key是一个函数,他的参数是iterable的单个元素,然后返回比较的键

对列表进行排序

简单结构的列表排序比较简单,直接比较数字的大小,不需要执行key

list1=[1,3,6,0,4,5]

print(sorted(list1))

运行结果:

[0, 1, 3, 4, 5, 6]
对字典进行排序

对字典的排序,返回的是字典的key排序后的结果

d1={1: 'D', 2: 'B', 3: 'B', 6: 'E', 5: 'A'}

print(sorted(d1))

运行结果:

[1, 2, 3, 5, 6]
字典列表排序

若排序时不指定比较的键也就是key,会报错,因为dict之间是无法比较的

lst2=[{"name":"wang","age":12},{"name":"xiaohong","age":16},{"name":"xiaogang","age":14}]

print(sorted(lst2))

运行结果:

TypeError: '<' not supported between instances of 'dict' and 'dict'

编写一个函数,参数是lst2的单个元素,返回要比较的键,比较时,sorted会将dict1逐一替换成{“name”:“wang”,“age”:12}等

lst2=[{"name":"wang","age":12},{"name":"xiaohong","age":16},{"name":"xiaogang","age":14}]

def com_with_age(dict1):
    return dict1['age']

print(sorted(lst2,key=com_with_age))

运行结果:

[{'name': 'wang', 'age': 12}, {'name': 'xiaogang', 'age': 14}, {'name': 'xiaohong', 'age': 16}]

因为com_with_age是单个参数的函数,也只有return一个语句,可以改写为lamda表达式

lst2=[{"name":"wang","age":12},{"name":"xiaohong","age":16},{"name":"xiaogang","age":14}]

print(sorted(lst2,key=lambda x:x['age']))
元祖列表的排序
lst3=[("wang",12),("xiaohong",16),("xiaogang",14)]
print(sorted(lst3,key=lambda x:x[1]))

运行结果:

[('wang', 12), ('xiaogang', 14), ('xiaohong', 16)]
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值