根据字符串列表

时间:2015-08-02 20:12:06

标签: python list sorting

如果我有一个清单:

arr = ['b', 'd', 'a', 'c']

以及类似的列表列表:

stats = [['a', 35, 109], ['b', 100, 50], ['c', 30, 80], ['d', 40, 50]]

我想根据“arr”订购“统计数据”。所以,我想:

stats = [['b', 100, 50], ['d', 40, 50], ['a', 35, 109], ['c', 30, 80]]

在Python中有一种简单的方法吗?

谢谢

2 个答案:

答案 0 :(得分:3)

您可以将sorted与一个键函数结合使用,该函数根据arr中第一个元素的索引对嵌套列表进行排序:

>>> arr = ['b', 'd', 'a', 'c']
>>> stats = [['a', 35, 109], ['b', 100, 50], ['c', 30, 80], ['d', 40, 50]]
>>> sorted(stats,key=lambda x:arr.index(x[0]))
[['b', 100, 50], ['d', 40, 50], ['a', 35, 109], ['c', 30, 80]]
>>> 

答案 1 :(得分:1)

您可以使用可能很慢的sorted + index或可能很快的字典查找:

arr = ['b', 'd', 'a', 'c']
stats = [['a', 35, 109], ['b', 100, 50], ['c', 30, 80], ['d', 40, 50]]
# create dictionary by sort key
stats_dict = {x[0]: x for x in stats}
# use dictionary lookups to sort
sorted_arr = [stats_dict[item] for item in arr]

注意:这假定每个字母有一个项目,因为它们被用作字典中的键。