我想对列表进行数字排序
s = [['92', '022'],['82','12'],['77','13']]
所以我用
s = [list( map(int,i) ) for i in s]
s.sort()
输出结果
[[77, 13],[82, 12],[92, 22]]
但是我想保持22不变,即“ 022” 所以,我的问题是如何防止前导零!
答案 0 :(得分:4)
您可以将sorted
与以下key
一起使用,那样您就可以避免通过列表理解来转换实际值:
sorted(l, key = lambda x: int(x[0]))
[['77', '13'], ['82', '12'], ['92', '022']]
您还可以按照@aws_apprentice的建议使用operators.itemgetter
:
sorted(l, key = lambda x: int(itemgetter(0)(x)))
[['77', '13'], ['82', '12'], ['92', '022']]
答案 1 :(得分:0)
key
函数背后的想法:将值转换为它们的排序键。所以:
def sort_key(val):
return list(map(int, val))
s.sort(key=sort_key)
# [['77', '13'], ['82', '12'], ['92', '022']]
应该最接近您尝试的逻辑。