Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当我更改键的顺序时,为什么对这个dict列表排序失败?_Python - Fatal编程技术网

Python 当我更改键的顺序时,为什么对这个dict列表排序失败?

Python 当我更改键的顺序时,为什么对这个dict列表排序失败?,python,Python,我有一份我正在整理的目录。为什么第一种方法通过了,而第二种方法失败了?问题并没有解决这个问题(或者我只是遗漏了一些非常明显的东西) 在第一种情况下,比较元组 ('Fred', None) < ('Dave', datetime.now().date()) ('Fred',None)

我有一份我正在整理的目录。为什么第一种方法通过了,而第二种方法失败了?问题并没有解决这个问题(或者我只是遗漏了一些非常明显的东西)


在第一种情况下,比较元组

('Fred', None) < ('Dave', datetime.now().date())
('Fred',None)<('Dave',datetime.now().date())
由于每个元组的第一个元素是不同的,Python根本不需要比较第二个元素来知道哪个元素比另一个元素小


在第二种情况下,您将
None
日期进行比较。Python2确实允许混合类型比较(虽然不是这个特定的情况-请参阅注释),但它不是特别有用,而且更可能导致奇怪的错误,因此在Python3中,在第一个比较元组的情况下,此功能被删除

('Fred', None) < ('Dave', datetime.now().date())
('Fred',None)<('Dave',datetime.now().date())
由于每个元组的第一个元素是不同的,Python根本不需要比较第二个元素来知道哪个元素比另一个元素小


在第二种情况下,您将
None
日期进行比较。Python2确实允许混合类型比较(虽然不是这个特定的情况-请参阅注释),但它不是特别有用,而且更可能导致奇怪的错误,因此在Python3中删除了此功能,因为它是逐元素比较元组。只有当第一个元素相等时,它才会比较第二个元素。换句话说,如果将两个“b”值都设置为“Dave”,它将失败。

它是逐元素比较元组。只有当第一个元素相等时,它才会比较第二个元素。换句话说,如果两个“b”值都设置为“Dave”,它将失败。

尝试
listy.append({'a':23,'b':'Dave'})
,您将在第一个排序中看到相同的错误。尝试
listy.append({'a':23,'b':'Dave'})
,您将在第一个排序中看到相同的错误。Python 2也不允许这样做。它允许相互比较许多不同的类型,这些类型不是特别有用,但不是全部,并且
None
将引发
TypeError:无法将datetime.date与NoneType进行比较。(在3.x中,这是由一般错误案例处理的,错误消息稍微好一点:
TypeError:unorderable类型:datetime.date()
)Python 2也不允许这样做。它允许相互比较许多不同的类型,这些类型不是特别有用,但不是全部,并且
None
将引发
TypeError:无法将datetime.date与NoneType进行比较。(在3.x中,这是由一般的错误案例处理的,有一个稍微好一点的错误消息:
TypeError:unorderable类型:datetime.date()
)你是对的,但gnibbler击败了你…你是对的,但gnibbler击败了你…你是对的,但gnibbler会接受gnibbler