我在Python中有一个包含三个字符串的列表,例如
m = [['pig', 'quartz', '1'], ['pork', 'nails', '1'], ...]
我想按索引0排序,然后按索引2的相反顺序排序,然后按索引1排序。在排序的每一步,我都希望保持其他列所施加的顺序。例如
^{pr2}$会变成:
pig quartz 1
pork barn 4
pork barn2 4
pork nails 1
quail quatern 1
quinoa pail 1
quinoa quatern 1
radish inbox 3 <-
radish barn 1
radish barn2 1
radish snow 1
也就是说,先按第一列排序,然后在每组第1列(猪、猪肉、鹌鹑等)内排序,再按倒数第三列排序,然后在每组第1列至第3列((pig,1),(pork,4),(pork,1),…)内,按第二列排序。在
我怎么才能做得好呢?从概念上讲,如果operator.itemgetter()
可以对排序顺序和索引进行编码,那么我需要类似m.sort(key=operator.itemgetter(0, -2, 1))
的代码。在
注意,
cmp
关键字参数是removed from Python3。为了将来的兼容性,您可能希望继续使用key
。在使用自定义比较函数:
比较函数不是最优的,可能重写为:
^{pr2}$正如其他人指出的那样,这也会起作用:
^{3}$我会试试这样的方法:
相关问题 更多 >
编程相关推荐