Python:基于第一种无类型排序两个列表

所以我有两个清单:

keys   = ['Z', 'X', None, None]
values = [ 0 ,  1 , None, None]

我需要能够获取这两个列表并根据键值对它们进行排序,然后将其返回给自己.理想情况下,输出将是:

keys   = ['X', 'Z', None, None]
values = [ 1 ,  0 , None, None]

我在这里尝试的是:

self.keys, self.values = (list(x) for x in zip(*sorted(zip(self.keys, 
                          self.values), key=lambda pair: pair[0])))

这很好用,除了它给我的错误:

TypeError: unorderable types: NoneType() < str()

如何使用此方法对无进行排序?有什么比我正在尝试的更好的方法吗?

最佳答案 只需为您的密钥添加条件以进行排序

keys, values = (list(x) for x in zip(*sorted(zip(keys, values), key=lambda pair: pair[0] if pair[0] is not None else 'temp')))

这样做会将’temp’映射到列表中的任何None值,并且按照排序’temp’的比较顺序大于’X’.大写字母小于小写

>>> 'temp' < 'X'
False
点赞