gpt4 book ai didi

python - 在 Python 3 中对两个列表进行排序时如何忽略任何空格或空格?

转载 作者:太空宇宙 更新时间:2023-11-04 06:49:48 24 4
gpt4 key购买 nike

我这里有一个大的嵌套列表,它被简化了,因为实际的列表有几十个列表:

 bigNestedList = [["d", "c", "a", "b", "e"],[4,"",8,9,""],.....]

为简单起见,我将它们分成两个单独的列表:

list1 = ["d", "c", "a", "b", "e"]
list2 = [4,"",8,9,""]

我想根据 list2 对 list1 进行升序排序。然而问题出现在 list2 中的空格。

我试图删除 list2 中的空白并对它们进行排序:

list2_tmp = list(filter(None, list2))

list2, list1 = zip(*sorted(zip(list2_tmp, list1)))

但是最终排序的列表是不正确的

list1
Out[164]: ('d', 'c', 'a')

list2
Out[165]: (4, 8, 9)

正确答案应该是 (d, a, b) 和 (4, 8, 9)。

但这意味着我必须删除 list1 中对应于 list2 中空白索引的元素。但是,稍后我还必须在我的代码中使用来自 list1 的原始数据。

因此,我该如何以最有效的方式对这两个列表进行排序,方法是忽略任何空白而不求助于创建占用更多内存的额外列表? (稍后我还有几十个列表要排序到 list1)

最佳答案

您可以将两个列表压缩在一起,删除带空格的条目,然后对其余部分进行排序:

sorted(pair for pair in zip(list2, list1) if pair[0] != '')

这会生成一个元组列表,因此您需要提取第二个元素:

[b for a, b in sorted(pair for pair in zip(list2, list1) if pair[0] != '')]

演示:

>>> [b for a, b in sorted(pair for pair in zip(list2, list1) if pair[0] != '')]
['d', 'a', 'b']

关于python - 在 Python 3 中对两个列表进行排序时如何忽略任何空格或空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48852240/

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