[英]How to create sub-lists with 3 elements, but if a sub-list gets a single element then instead create two with 2 elements?
[英]Python . How to sort elements of sub-list if second elements are equal sort the sub-lists by first element
我有一个这样的清单:
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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.