排序列表列表与python中的另一个列表列表

穆罕默德·乌斯曼·阿里夫

我有两个列表列表,我想将第一个列表相对于第二个进行排序。例如这里我有两个

old = [[1, 7, 3, 2, 5, 4, 6, 0, 8, 9], 
       [7, 3, 2, 5, 4, 6, 1, 8, 0, 9], 
       [9, 2, 8, 7, 1, 5, 0, 4, 6, 3]]
new = [[4, 1, 5, 6, 7, 9, 10, 11, 8, 2, 3, 0], 
       [10, 6, 4, 3, 0, 11, 2, 5, 8, 1, 9, 7], 
       [0, 1, 7, 10, 9, 6, 4, 5, 8, 2, 3, 11]]

我想对new列表列表进行排序old所以对于新的条目应该成为

sorted_new = [[1, 7, 3, 2, 5, 4, 6, 0, 8, 9, 10, 11], 
              [7, 3, 2, 5, 4, 6, 1, 8, 0, 9, 10, 11], 
              [9, 2, 8, 7, 1, 5, 0, 4, 6, 3, 10, 11]]

需要注意的是,要匹配的两个列表的大小不同。我怎样才能做到这一点?

威廉·范·翁塞姆

您可以使用以下方法:

sorted_new = []
for sub_new,sub_old in zip(new,old):
    old_idx = {k:v for v,k in enumerate(sub_old)}
    sorted_new.append(sorted(sub_new,key=lambda x:old_idx.get(x,len(sub_old))))

然后生成:

>>> sorted_new
[[1, 7, 3, 2, 5, 4, 6, 0, 8, 9, 10, 11], [7, 3, 2, 5, 4, 6, 1, 8, 0, 9, 10, 11], [9, 2, 8, 7, 1, 5, 0, 4, 6, 3, 10, 11]]

该代码的工作原理如下:我们首先在两个列表上运行new,并old兼任。对于每对这样的列表。我们首先生成一个带有字典理解的字典,它将 的元素映射sub_old到它们在列表中的相应索引。

接下来我们为 构造一个排序列表sub_new如果那个元素sub_new在 中old_idx,我们返回索引(这就是排序键)。如果不是,我们返回一个 default len(sub_old),因此它大于字典中的所有索引。结果,该元素将被放置在列表的右侧。

由于 Python 的 sort 函数保证稳定,这意味着不在 中的元素old将保持原始顺序。

我们本可以在该list.index(..)方法周围使用一些魔法,而不是构建这样的索引字典。但问题.index(..)在于它在O(n) 中运行因此,这将使每个子列表的算法为O(m×n log n),其中m是 中的元素数oldn是 中的元素数new

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Python中的列表列表中将列表分配给另一个列表

来自分类Dev

Python:初始化并填充另一个列表列表中的列表列表

来自分类Dev

检查列表列表的所有元素是否在另一个列表列表Python中

来自分类Dev

用python中的另一个列表遍历列表列表

来自分类Dev

Python-如何按另一个列表列表的最后一个元素对列表列表进行排序?

来自分类Dev

pandas:根据另一个列表列中的条件从列表列返回值

来自分类Dev

如何在Python中将列表列表中的一个值与列表列表中的另一个值进行比较

来自分类Dev

在R中的另一个列表列表中检查列表的子集

来自分类Dev

基于另一个列表中的数字的列表列表

来自分类Dev

检查列表列表中的元素是否包含另一个列表

来自分类Dev

从从 JSON 文件解析的另一个列表列表中构建对象列表

来自分类Dev

在python中按一定长度将列表列表组合到另一个列表列表

来自分类Dev

如何将列表列表中的数字分配给python 3中的另一个列表列表?

来自分类Dev

检查是否有一个列表列表可以与另一个列表列表统一

来自分类Dev

根据另一个排序列表在python中对列表进行排序

来自分类Dev

熊猫python从另一个列值中从列表列中随机选择值

来自分类Dev

给定一个列表列表,返回一个列表长度的列表(在另一个列表中)

来自分类Dev

如何按一个元素升序和另一个降序对列表列表进行排序

来自分类Dev

检查列表列表的第一项是否在另一个列表列表的第一项中

来自分类Dev

如何检查列表列表是否包含另一个列表

来自分类Dev

Python排序列表按另一个列表排序,但是排序列表是日期类型

来自分类Dev

从列表列表中返回一个排序的索引列表

来自分类Dev

如何一次遍历两个列表列表并将一个列表中的值替换为另一个列表?

来自分类Dev

Python Pandas Dataframe 检查列表列并从另一个 Dataframe 返回 ID

来自分类Dev

如何将不同的值从一个哈希表列表添加到另一个哈希表列表中

来自分类Dev

基于C#中另一个浮动列表的排序列表

来自分类Dev

获取列表列表中的上一个元素

来自分类Dev

比较列表列表中的一个元素

来自分类Dev

获取列表列表中的上一个元素

Related 相关文章

  1. 1

    在Python中的列表列表中将列表分配给另一个列表

  2. 2

    Python:初始化并填充另一个列表列表中的列表列表

  3. 3

    检查列表列表的所有元素是否在另一个列表列表Python中

  4. 4

    用python中的另一个列表遍历列表列表

  5. 5

    Python-如何按另一个列表列表的最后一个元素对列表列表进行排序?

  6. 6

    pandas:根据另一个列表列中的条件从列表列返回值

  7. 7

    如何在Python中将列表列表中的一个值与列表列表中的另一个值进行比较

  8. 8

    在R中的另一个列表列表中检查列表的子集

  9. 9

    基于另一个列表中的数字的列表列表

  10. 10

    检查列表列表中的元素是否包含另一个列表

  11. 11

    从从 JSON 文件解析的另一个列表列表中构建对象列表

  12. 12

    在python中按一定长度将列表列表组合到另一个列表列表

  13. 13

    如何将列表列表中的数字分配给python 3中的另一个列表列表?

  14. 14

    检查是否有一个列表列表可以与另一个列表列表统一

  15. 15

    根据另一个排序列表在python中对列表进行排序

  16. 16

    熊猫python从另一个列值中从列表列中随机选择值

  17. 17

    给定一个列表列表,返回一个列表长度的列表(在另一个列表中)

  18. 18

    如何按一个元素升序和另一个降序对列表列表进行排序

  19. 19

    检查列表列表的第一项是否在另一个列表列表的第一项中

  20. 20

    如何检查列表列表是否包含另一个列表

  21. 21

    Python排序列表按另一个列表排序,但是排序列表是日期类型

  22. 22

    从列表列表中返回一个排序的索引列表

  23. 23

    如何一次遍历两个列表列表并将一个列表中的值替换为另一个列表?

  24. 24

    Python Pandas Dataframe 检查列表列并从另一个 Dataframe 返回 ID

  25. 25

    如何将不同的值从一个哈希表列表添加到另一个哈希表列表中

  26. 26

    基于C#中另一个浮动列表的排序列表

  27. 27

    获取列表列表中的上一个元素

  28. 28

    比较列表列表中的一个元素

  29. 29

    获取列表列表中的上一个元素

热门标签

归档