我的问题是我不明白为什么我的sorted()在高于hunderd的整数上没有正常工作。
代码:
new_sheets = [sorted(i) for i in new_sheets]
输入:
[['64', '65', '0'], ['86', '94', '94', '64'], ['99', '111', '103', '90'], ['36', '48', '47', '100']]
输出:
[['0', '64', '65'], ['64', '86', '94', '94'], ['103', '111', '90', '99'], ['100', '36', '47', '48']]
我错过了什么吗?
答案 0 :(得分:4)
因为它们不是整数,所以它们是字符串。字符串排序按字母顺序排列,因此任何以1
开头的内容都会出现在以2
,3
等开头的任何内容之前。为了排序好像是整数,请执行:
new_sheets = [sorted(i, key=int) for i in new_sheets]
它会在排序之前将它们转换为整数但仍返回字符串。如果要返回整数,请执行:
new_sheets = [sorted(map(int, i)) for i in new_sheets]
答案 1 :(得分:3)
您的输入似乎是字符串而不是整数。字符串按字典顺序排序(字典顺序),因此'111'在'90'之前。
尝试
sorted(int(x) for x in i)