gpt4 book ai didi

python - 根据另一个列表对元组列表进行排序

转载 作者:行者123 更新时间:2023-12-02 17:03:36 24 4
gpt4 key购买 nike

我有一个元组列表,例如。

l1 = [(1, 'a', 'x'), (2, 'b', 'y'), (3, 'a', 'z'), (4, 'c', 'xyz')]

我有另一个列表

l2 = ['a', 'b', 'c']

我想根据 l2 中存在的顺序对每个元组的第二个值 l1 进行排序。最后的结果应该是

l1 = [(1, 'a', 'x'), (3, 'a', 'z'), (2, 'b', 'y'), (4, 'c', 'xyz')]

如您所见,第二个值为 a 的元组首先出现,然后是第二个值为 b 的元组,最后是具有 c 的元组

我写了以下内容:

l = []
for i in l2:
for j in l1:
if i == j(1):
l.append(j)

这很简单。但我想知道是否有任何 pythonic 方法来完成这件事?

最佳答案

您可以使用 sorted使用适当的 key 函数:

l1 = [(1, 'a', 'x'), (2, 'b', 'y'), (3, 'a', 'z'), (4, 'c', 'xyz')]
l2 = ['a', 'b', 'c']
d2 = {v: i for i, v in enumerate(l2)} # map elements to indexes
# {'a': 0, 'b': 1, 'c': 2}

sorted(l1, key=lambda x: d2[x[1]])
# [(1, 'a', 'x'), (3, 'a', 'z'), (2, 'b', 'y'), (4, 'c', 'xyz')]

关于python - 根据另一个列表对元组列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52834588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com