2024-04-20 07:14:41 发布
网友
如何根据sorter_list中的项目顺序对lista排序:
sorter_list
lista
lista = [["John", "B3"],["Robert", "P3"], ["Thomas", "S2"]] sorter_list = ["P3", "S2", "B3"]
结果将是:
问候
尽管@F.J有一个完美的解决方案,但我的问题是,为什么不首先使用字典来存储这种数据?在
带字典:
d = {'B3': 'John', 'P3': 'Robert', 'S2': 'Thomas'} sorter = ["P3", "S2", "B3"] print([(d[key], key) for key in sorter])
输出:
另外:您还应该检查collections模块的OrderedDict。在
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}}
以后查找会容易得多。
您可以在O(N)中通过构建一个字典来实现这一点,其中的键是B3,S2等
B3
S2
lookup_dict = dict( (item[1],item) for item in lista) sorted_lista = [ lookup_dict[key] for key in sorter_list ]
{cd3>已经利用了你的事实。在
假设sorter_list中始终有一个条目与lista中每个列表的第二个元素相匹配:
sorted_lista = sorted(lista, key=lambda lst: sorter_list.index(lst[1]))
尽管@F.J有一个完美的解决方案,但我的问题是,为什么不首先使用字典来存储这种数据?在
带字典:
输出:
^{pr2}$另外:您还应该检查
collections
模块的OrderedDict
。在更新:
当然,您可以将这些值存储为列表,这样就可以保存多个值:
带字典:
输出:
在这种情况下,您还可以在字典中使用字典:
以后查找会容易得多。
您可以在O(N)中通过构建一个字典来实现这一点,其中的键是
B3
,S2
等{cd3>已经利用了你的事实。在
假设
sorter_list
中始终有一个条目与lista
中每个列表的第二个元素相匹配:相关问题 更多 >
编程相关推荐