虽然@F.J 有一个完美的解决方案,但我的问题是,你为什么不首先使用字典来存储这种数据?
带字典:
d = {'B3': 'John', 'P3': 'Robert', 'S2': 'Thomas'}
sorter = ["P3", "S2", "B3"]
print([(d[key], key) for key in sorter])
输出:
[('Robert', 'P3'), ('Thomas', 'S2'), ('John', 'B3')]
另外:您还应该检查collections 模块的OrderedDict。
更新:
当然,您可以将值存储为列表,因此可以保存多个值:
带字典:
d = {'B3': [('John', 123)], 'P3': [('Robert', 465), ('Andres', 468)], 'S2': [('Thomas', 19)]}
sorter = ('P3', 'B3', 'S2')
print([(d[key], key) for key in sorter])
输出:
[([('Robert', 465), ('Andres', 468)], 'P3'), ([('John', 123)], 'B3'), ([('Thomas', 19)], 'S2')]
在这种情况下,您还可以在字典中使用字典:
d = {'B3': {'John': 123}, 'P3': {'Robert': 465, 'Andres': 468}, 'S2': {'Thomas': 19}}
以后查找会容易得多。