gpt4 book ai didi

python - 当值为 None 或空字符串时排序python

转载 作者:行者123 更新时间:2023-12-03 18:30:01 25 4
gpt4 key购买 nike

我有一个字典列表,我在其中按不同的值对它们进行排序。我正在用这些代码行来做:

def orderBy(self, col, dir, objlist):
if dir == 'asc':
sorted_objects = sorted(objlist, key=lambda k: k[col])
else:
sorted_objects = sorted(objlist, key=lambda k: k[col], reverse=True)
return sorted_objects

现在的问题是,当我尝试排序时,偶尔会有空值或空字符串,然后一切都会崩溃。

我不确定,但我认为这是抛出的异常:无法排序的类型:NoneType() < NoneType()。当我尝试排序的列上没有值时,就会发生这种情况。对于空字符串值,尽管它们在列表中排在第一位,但它仍然有效,但我希望它们排在最后。

我怎么解决这个问题?

最佳答案

如果您想要 None''最后出现的值,您可以拥有 key函数返回一个元组,因此列表按该元组的自然顺序排序。元组的形式为 (is_none, is_empty, value) ;这样,None 的元组值将是 (1, 0, None) , 为 ''(0, 1, '')以及其他任何事情 (0, 0, "anything else") .因此,这将首先对正确的字符串进行排序,然后是空字符串,最后是 None .

例子:

>>> list_with_none = [(1,"foo"), (2,"bar"), (3,""), (4,None), (5,"blub")]
>>> col = 1
>>> sorted(list_with_none, key=lambda k: (k[col] is None, k[col] == "", k[col]))
[(2, 'bar'), (5, 'blub'), (1, 'foo'), (3, ''), (4, None)]

关于python - 当值为 None 或空字符串时排序python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30976124/

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