所以我有两个清单:
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()
如何使用此方法对None进行排序?有比我正在尝试的更好的方法吗?
只需为您的密钥添加一个条件 sorted
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”映射到列表中的任何“无”值,并且按照比较顺序将“ temp”排序为大于“ X”。大写字母小于小写字母
>>> 'temp' < 'X'
False
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句