我无法根据我编写的顺序对列表中的元组进行排序,在列表中表示。下面是我列表中的元组
list_tup = [('NYC','SF'), ('HOU','BOS'), ('NYC','DAL')]
这是我想要的从头到尾的元素顺序。我把它们放在一个清单中。
sls = ['SF','DAL','NYC','HOU', 'BOS']
我尝试了一些基本的东西:
sorted(list_tup, key = sls)
但由于列表对象不可调用,因此无效。可以这样做吗?
我想要的输出是:
output = [('SF','NYC'),('HOU','BOS'),('DAL','NYC')]
任何帮助将不胜感激
答案 0 :(得分:3)
list_tup = [('NYC', 'SF'), ('HOU', 'BOS'), ('NYC', 'DAL')]
sls = ['SF', 'DAL', 'NYC', 'HOU', 'BOS']
# Convert `sls` to a dictionary with the index as the value
sls_d = {item:idx for idx, item in enumerate(sls)}
# Sort individual tuples based on the index from `sls_d`
print [tuple(sorted(items, key=sls_d.get)) for items in list_tup]
# [('SF', 'NYC'), ('HOU', 'BOS'), ('DAL', 'NYC')]
如果您不担心性能,可以使用sls
列表中元素的索引进行排序,(索引查找将是线性搜索)
print [tuple(sorted(items, key=sls.index)) for items in list_tup]
# [('SF', 'NYC'), ('HOU', 'BOS'), ('DAL', 'NYC')]