如果我有一个清单:
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中有一种简单的方法吗?
谢谢
答案 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]
注意:这假定每个字母有一个项目,因为它们被用作字典中的键。