我有一个文件夹,其中的数据集排序不正确,并且id希望在阅读时重新排列从中提取的信息。因此,我想知道,是否有一种简单的方法可以对以下输入进行排序:
[['-10' '10']
['-10' '20']
['-15' '10']
['-15' '20']
['-5' '10']
['-5' '20]
['0' '10']
['0' '20']
['10' '10']
['10' '20']
['15' '10']
['15' '20']
['5' '10']
['5' '20]
变成以下输出:
[['-15' '10']
['-15' '20']
['-10' '10']
['-10' '20']
['-5' '10']
['-5' '20]
['0' '10']
['0' '20']
['5' '10']
['5' '20]
['10' '10']
['10' '20']
['15' '10']
['15' '20']]
恐怕您需要将str
值强制转换int
为所需的排序顺序。然后,您只想按多个属性对列表进行排序。如果您也想str
在输出中包含值,则还需要向后转换。
import operator
a = [['-10', '10'],
['-10', '20'],
['-15', '10'],
['-15', '20'],
['-5', '10'],
['-5', '20'],
['0', '10'],
['0', '20'],
['10', '10'],
['10', '20'],
['15', '10'],
['15', '20'],
['5', '10'],
['5', '20']]
print(a)
b = [[int(e[0]), int(e[1])] for e in a] # to int
b = sorted(b, key=operator.itemgetter(0, 1)) # sort
b = [[str(e[0]), str(e[1])] for e in b] # to str
print(b)
输出:
[['-10', '10'], ['-10', '20'], ['-15', '10'], ['-15', '20'], ['-5', '10'], ['-5', '20'], ['0', '10'], ['0', '20'], ['10', '10'], ['10', '20'], ['15', '10'], ['15', '20'], ['5', '10'], ['5', '20']]
[['-15', '10'], ['-15', '20'], ['-10', '10'], ['-10', '20'], ['-5', '10'], ['-5', '20'], ['0', '10'], ['0', '20'], ['5', '10'], ['5', '20'], ['10', '10'], ['10', '20'], ['15', '10'], ['15', '20']]
希望有帮助!
编辑:或只是在使用一些lambda
表达式sorted
:
c = sorted(a, key = lambda x: (int(x[0]), int(x[1])))
print(c)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句