
python如何不同列表进行排序
用户关注问题
如何根据一个列表对另一个列表进行排序?
我有两个相关联的列表,如何使用一个列表的排序顺序对另一个列表进行排序?
使用一个列表的排序顺序对另一个列表排序的方法
可以使用Python内置的zip函数将两个列表组合在一起,然后根据第一个列表进行排序,最后再拆分回独立的列表。例如:
list1 = [3, 1, 2]
list2 = ['c', 'a', 'b']
combined = list(zip(list1, list2))
combined.sort() # 通过list1排序
list1_sorted, list2_sorted = zip(*combined)
print(list(list1_sorted)) # [1, 2, 3]
print(list(list2_sorted)) # ['a', 'b', 'c']
怎样同时对多个列表按照同一种排序规则排序?
我有多个相关列表,想让它们同时根据某个规则进行排序,有什么好的方法?
多个列表同步排序的解决方案
可以将多个列表使用zip组合成一个列表的元组,然后对组合后的列表进行排序。排序完成后,使用zip(*)拆分回各个排序后的列表。这样可以保证各列表的元素对应关系不变。示例代码:
list1 = [2, 3, 1]
list2 = ['b', 'c', 'a']
combined = list(zip(list1, list2))
combined.sort() # 按list1排序
list1_sorted, list2_sorted = zip(*combined)
print(list(list1_sorted)) # [1, 2, 3]
print(list(list2_sorted)) # ['a', 'b', 'c']
使用Python排序列表时,如何保持两个列表元素的对应关系?
在对一个列表排序时,如何确保和它相对应的另一个列表元素按照相同的顺序调整?
保持多个列表元素对应关系的排序技巧
为了在排序时保持多个列表之间的对应关系,最常用的方法是先将它们用zip组合成元组列表,按主列表进行排序,排序后再解压回各个列表。这样能使得排序后的各列表元素对应依然匹配。例如:
keys = [5, 3, 4]
values = ['e', 'c', 'd']
pairs = list(zip(keys, values))
pairs.sort()
keys_sorted, values_sorted = zip(*pairs)
print(list(keys_sorted)) # [3, 4, 5]
print(list(values_sorted)) # ['c', 'd', 'e']