我有两个清单:
a_list = ['a', 'k', 'a']
c_list = [[None, None], [13, None], ['f', None]]
我想把一份清单和一份清单按顺序排列。所以在分类之后,我想要:
^{pr2}$我试图用zip
,sort
,zip
方法来完成,但在以下阶段它会给我错误消息:
a_c_zip = sorted(zip(a_list,c_list))
TypeError: unorderable types: int() < NoneType()
我认为这是因为两个a
值的模糊性造成的,但我想知道是否有解决办法?毕竟,排序一张清单没有任何问题
我真的不想写我自己的排序程序,因为它会非常慢。在
您需要指定排序所依据的键。如果您不关心两个“a”项的排序顺序,您只需告诉
sorted
查看由zip
生成的每对元素的第一个元素(其中每对元素包含一个来自a_list
的元素,然后是一个来自c_list
的元素)。在如果您确实关心两个“a”条目是如何排序的(也就是说,您希望它们的排序方式取决于
c_list
)中的相应条目,那么您需要弄清楚None
、整数和字符串如何相互排序。在一种可能性是将
^{pr2}$None
视为''
,并将数字视为其字符串表示形式,并利用Python按元素值从左到右对iterable进行排序的事实:或者是一些类似的东西。在
得到TypeError的原因是}。由于两个元组的第0个元素相同,因此必须比较第一个元素。因为两个元素都有一个iterable作为第一个元素,所以它将}元素进行比较。但要做到这一点,它必须将}和{a1}进行比较(尽管在python2中可以这样做)。在
sorted
试图比较('a', [None, None])
和{[None, None]
与{'f'
与{相关问题 更多 >
编程相关推荐