使用python映射到整数后如何防止前导零

时间:2019-01-25 15:35:57

标签: python list sorting mapping

我想对列表进行数字排序

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” 所以,我的问题是如何防止前导零!

2 个答案:

答案 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']]

应该最接近您尝试的逻辑。