[英]How to sort a list according to another list? Python
因此,如果我有一个列表:
name = ['Megan', 'Harriet', 'Henry', 'Beth', 'George']
我还有另一个列表,其中每个值以正确的顺序代表名称
score_list = [9, 6, 5, 6, 10]
因此,Megan = 9,Beth = 6(顺便说一句,这是从字典中得出的)
我如何按字母顺序对名称排序,但保持score_list匹配名称? 我已经使用冒泡排序方法对数字进行了排序,但没有对字符串进行排序。
一个显而易见的方法是zip
排序两个列表,然后把它解压
>>> name, score = zip(*sorted(zip(name, score_list)))
>>> name
('Beth', 'George', 'Harriet', 'Henry', 'Megan')
>>> score
(6, 10, 6, 5, 9)
您可以使用zip
在与元组同时对它们进行排序。 排序将按名称进行:
tuples = sorted(zip(name, score_list))
接着
name, score_list = [t[0] for t in tuples], [t[1] for t in tuples]
如果您有字典,则正确的方法是按键对项目进行排序:
name = ['Megan', 'Harriet', 'Henry', 'Beth', 'George']
score_list = [9, 6, 5, 6, 10]
d = dict(zip(name, score_list))
from operator import itemgetter
print(sorted(d.items(), key=itemgetter(0)))
[('Beth', 6), ('George', 10), ('Harriet', 6), ('Henry', 5), ('Megan', 9)]
考虑使用第三方工具more_itertools.sort_together
:
特定
import more_itertools as mit
name = ["Megan", "Harriet", "Henry", "Beth", "George"]
score_list = [9, 6, 5, 6, 10]
码
mit.sort_together([name, score_list])
# [('Beth', 'George', 'Harriet', 'Henry', 'Megan'), (6, 10, 6, 5, 9)]
安装more_itertools
经> pip install more_itertools
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.