根据另一个嵌套列表对嵌套列表进行排序
Sorting a nested list based on another nested list
我有两个嵌套列表,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 中出现的顺序。
我需要只使用 python 标准库来完成此操作。
您可以使用 enumerate
构建一个将 x1
中的键映射到其索引的字典,然后使用 returns 索引的键函数对 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]]
尝试以下操作:
x1 = [["a", 1],
["b", 2],
["c", 3],
["d", 4]]
x2 = [["b", 1],
["d", 2],
["a", 3],
["c", 4]]
x2.sort(key=lambda k: dict(x1)[k[0]])
x2
这个输出
[['a', 3], ['c', 4], ['b', 1], ['d', 2]]
我有两个嵌套列表,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 中出现的顺序。
我需要只使用 python 标准库来完成此操作。
您可以使用 enumerate
构建一个将 x1
中的键映射到其索引的字典,然后使用 returns 索引的键函数对 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]]
尝试以下操作:
x1 = [["a", 1],
["b", 2],
["c", 3],
["d", 4]]
x2 = [["b", 1],
["d", 2],
["a", 3],
["c", 4]]
x2.sort(key=lambda k: dict(x1)[k[0]])
x2
这个输出
[['a', 3], ['c', 4], ['b', 1], ['d', 2]]