2024-09-30 01:28:07 发布
网友
我有一个列表a:
a
a = ['c','d','b','a','e']
和一个列表b:
b
我怎样才能得到我的列表c,如下所示:
c
c = ['c003','d004','b002','a001','e005']
基本上按照a中定义的顺序,使用每个元素的一部分对b进行排序。在
非常感谢。在
可以使用key命名参数sorted()来完成:
key
sorted()
c = sorted(b, key = lambda e: a.index(e[0]))
如果您有一个非常大的列表,那么使用.index的解决方案将不会非常有效,因为第一个列表对于第二个列表中的每个条目都是index。这需要O(n^2)时间。在
.index
index
相反,您可以构造排序映射:
order = {v:i for i,v in enumerate(a)} c = sorted(b, key=lambda x: order[x[0]])
您可以尝试将lambda函数传递给sorted()内置函数的key参数:
lambda
a = ['c', 'd', 'B', 'a', 'e'] b = ['a001', 'B002', 'c003', 'd004', 'e005'] c = sorted(b, key = lambda x: a.index(x[0])) # ['c003', 'd004', 'b002', 'a001', 'e005']
可以使用
key
命名参数sorted()
来完成:如果您有一个非常大的列表,那么使用
.index
的解决方案将不会非常有效,因为第一个列表对于第二个列表中的每个条目都是index
。这需要O(n^2)时间。在相反,您可以构造排序映射:
您可以尝试将
lambda
函数传递给sorted()
内置函数的key
参数:相关问题 更多 >
编程相关推荐