我有一个list的tupleS,每个元组包含两个整数.我需要根据每个元组中整数的差异对列表进行排序(以相反的顺序排序),但是与较大的第一个整数断开连接.
例
因为[(5, 6), (4, 1), (6, 7)],我们应该得到[(4, 1), (6, 7), (5, 6)].
我的方式
我已经通过制作一个dictionary包含差异key的元素和元组来解决它value.但整件事情有点笨拙.
什么是更好的方法?
Mar*_*ers 17
使用key函数sorted()并返回元组; 值将按字典顺序排序:
sorted(yourlst, key=lambda t: (abs(t[0] - t[1])), t[0]), reverse=True)
我在abs()这里使用来计算差异,无论两个整数中哪一个更大.
对于您的样本输入,密钥产生(1, 5),(3, 4)和(1, 6); 以相反的顺序放置(1, 6)(对于(6, 7)元组)之前(1, 5)(对应(5, 6)).
演示:
>>> yourlst = [(5, 6), (4, 1), (6, 7)]
>>> sorted(yourlst, key=lambda t: (abs(t[0] - t[1]), t[0]), reverse=True)
[(4, 1), (6, 7), (5, 6)]
| 归档时间: | 
 | 
| 查看次数: | 4105 次 | 
| 最近记录: |