【发布时间】:2019-09-18 19:39:55
【问题描述】:
我一直在努力对列表进行排序或重新排列。我想根据数字(列表中的最后一个元素)按降序对列表进行排序。
因此,理想情况下,带有 (297539) 的列表将位于顶部;而带有 (234933) 的列表将位于底部:
[...., '297539']
[..]
[..]
[...., '234933']
有人可以帮我解决这个问题吗?非常感谢。 这是我到目前为止所做的output
【问题讨论】:
标签: python
我一直在努力对列表进行排序或重新排列。我想根据数字(列表中的最后一个元素)按降序对列表进行排序。
因此,理想情况下,带有 (297539) 的列表将位于顶部;而带有 (234933) 的列表将位于底部:
[...., '297539']
[..]
[..]
[...., '234933']
有人可以帮我解决这个问题吗?非常感谢。 这是我到目前为止所做的output
【问题讨论】:
标签: python
将sorted 与自定义key 函数一起使用:
# example list
l = [['a', '297539'],['sas', '257539'],['absdas', '287539'],['xasd', '234933']]
sorted(l, key=lambda x: int(x[-1]), reverse=True)
# [['a', '297539'], ['absdas', '287539'], ['sas', '257539'], ['xasd', '234933']]
【讨论】:
int 多余的@Nihal 怎么样?字符串按字典顺序排序,即'9' > '12',所以数字必须转为整数,否则只考虑第一个数字
sorted(a,key =lambda x:int(itemgetter(1)(x)))
itemgetter 很有趣,因为它可以用来避免 lambda 函数,因为操作保留在 C 端,@prashantrana 不是这种情况
使用itemgetter 可以处理循环
from operator import itemgetter
a = [['a', '297539'],['sas', '257539'],['absdas', '287539'],['xasd', '234933']]
a = sorted(a, key=itemgetter(1),reverse=True)
print(a)
【讨论】:
'9' > '12' 进行排序时,这大概是不是OP想要的吗?
sorted(a,key =lambda x:int(itemgetter(1)(x))) 对现有解决方案的改进。使用 lambda 我想你的答案要好得多。