Python 。如果第二个元素相等,如何对子列表的元素进行排序 按第一个元素对子列表进行排序

267

我有一个这样的清单:

 list_grade = [['m' , 7.5],['h',6.75],['z',15],['a',19.63],['b',6.75]]

我想要这个列表的确切输出而不改变子列表的位置,但如果子列表的第二个元素相等,则按这两个子列表的第一个元素对这两个子列表进行排序。

我的预期输出:

 list_grade = [['m' , 7.5],['b',6.75],['z',15],['a',19.63],['h',6.75]]

例如 ['b',6.75] 和 ['h',6.75] 通过替换它们的索引来排序

西蒙杰兹
from collections import defaultdict

list_grade = [['m' , 7.5],['h',6.75],['z',15],['a',19.63],['b',6.75]]

# collect the elements by value, like
# {7.5: [['m', 7.5]], 6.75: [['h', 6.75], ['b', 6.75]], ...}
element_map = defaultdict(list)

for elem in list_grade:
    element_map[elem[1]].append(elem)
    
# sort the elements
for k in element_map:
    element_map[k].sort()

# rebuild the list
list_grade_sorted = [element_map[v].pop(0) for _,v in list_grade]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章