我有两个嵌套列表,x1和x2。我需要根据x1 [0] [0]的顺序求助于x2。

我试过使用sort()和一些lambda x,但不完全确定如何处理此问题。

x1 = [["d", 0.4, 1],
     ["c", 0.5, 2],
     ["b", 0.3, 3],
     ["a", 0.5, 4]]

x2 = [["c", 4, 1],
     ["d", 2, 2],
     ["a", 6, 3],
     ["b", 6, 4]]


我希望为重新排序的x2得到以下输出

x2 = [["d", 2, 2],
     ["c", 4, 1],
     ["b", 6, 4],
     ["a", 6, 3]]


我不能依靠基于字母顺序的重新排序,因为我使用的数据集与此不同,并且我可能会遇到其他问题。理想情况下,我需要编写一些内容,使其仅将每个嵌套列表与x2在x1中出现的顺序匹配,仅基于每个嵌套列表的第一个元素(始终为字符串)。

我只需要使用pythons标准库即可。

最佳答案

您可以构建一个字典,使用x1enumerate中的键映射到其索引,然后使用一个键函数对x2进行排序,该键函数从映射的键返回索引:

order = {k: i for i, (k, *_) in enumerate(x1)}
x2.sort(key=lambda t: order[t[0]])


x2变为:

[['a', 3], ['b', 1], ['c', 4], ['d', 2]]

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

10-12 19:02