我有一个由元组组成的元组,我想先按第二个元素排序,然后按最底层的第三个元素排序,然后对中间层的每个元组进行迭代。你知道吗
例如,我想对以下列表进行排序:
sampleToBeSorted = (
(('D', 52, 'B'), ('D', 32, 'B')),
(('D', 31, 'A'), ('D', 52, 'B')),
(('A', 31, 'B'), ('D', 32, 'B')),
(('C', 31, 'A'), ('B', 24, 'C'), ('C', 33, 'B')),
(('D', 31, 'A'), ('D', 32, 'B'), ('C', 29, 'B'), ('D', 216, 'C')),
(('D', 40, 'B'), ('A', 32, 'C')),
)
所以它看起来是这样的:
sampleToBeSorted = (
((‘A’, 31, ‘B’), (‘D’, 32, ‘B’)),
((‘C’, 31, ‘A’), (‘B’, 24, ‘C’), (‘C’, 33, ‘B’)),
((‘D’, 31, ‘A’), (‘D’, 32, ‘B’), (‘C’, 29, ‘B’), (‘D’, 216, ‘C’)),
((‘D’, 31, ‘A’), (‘D’, 52, ‘B’)),
((‘D’, 40, ‘B’), (‘A’, 32, ‘C’)),
((‘D’, 52, ‘B’), (‘D’, 32, ‘B’)),
)
我用了:
sortedSample = sorted(sampleToBeSorted, key= lambda x:(x[0][1],x[0][0],x[0][2]))
但这只对中间层的第一个元组排序。为了让它对中间层中的所有元组进行迭代,我想我可以将其修改为
sortedSample = sorted(sampleToBeSorted, key= lambda x:(x[i][1],x[i][0],x[i][2]) for i in range(len(sampleToBeSorted[x]))
这是无效的语法,我不太明白什么是正确的方式来写这个。有什么想法吗?如果这类问题以前有人回答过,我提前向你道歉,但我已经试过并且搜索了我能想到的一切。你知道吗
试试这个:
关键是根据您的标准重新排序的元组列表
结果:
相关问题 更多 >
编程相关推荐