python元组可以排序吗_支持元组和列表的Python排序键功能

例如,在Python中,您可以对元组sorted([(2,2),(1,2,2,(2,1),(1,1)])进行排序,并获得[(1,1),(1,2) ,(2,1),(2,2)].

您还可以使用sorted([x,y,z],key = custom_key)的自定义键函数来实现特殊的排序条件.

例如:

medals_map = {'Gold': 1, 'Silver': 2, 'Bronze': 3 }

def custom_key(item):

if isinstance(item, basestring):

try:

return medals_map[item]

except KeyError:

pass

return item

可以正常排序任何字符串列表,也可以根据我的自定义排序对金/银/青铜进行排序.

但是它不再“正确地”处理元组:sorted([(‘Gold’,2),(‘Bronze’,1),(‘Gold’,1)],key = custom_key)结果为[(‘Bronze’ ,1),(‘Gold’,1),(‘Gold’,2)],因为item不是基本字符串.

但是我想通过以某种方式将自定义逻辑应用于元组中的每个项来获得[(‘Gold’,1),(”Gold’,2),(‘Bronze’,1)].

像默认键功能一样,将自定义键逻辑“映射”到列表中任何元组(可能显示或可能不显示)的最佳方法是什么?

编辑:更多示例:

>排序([[Silver],“ Bronze”,“ Gold”],key = custom_key)

> [“金”,“银”,“铜牌”]

>排序([[[‘Silver’,2],[‘Silver’,1],[‘Gold’,1]],key = custom_key)

> [[‘金’,1],[‘银’,1],[‘银’,2]]

>排序([[(2,’Gold’),(2,’Bronze’),(1,’Gold’)],key = custom_key)

> [((1,’Gold’),(2,’Gold’),(2,’Bronze’)]

>排序([(‘Silver’,’Bronze’),(‘Gold’,’Bronze’),(‘Silver’,’Gold’)],key = custom_key)

> [[(‘Gold’,’Bronze’),(‘Silver’,’Gold’),(‘Silver’,’Bronze’)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值