簡體   English   中英

為什么dicts比任何int都要大?

[英]Why do dicts compare greater than any int?

我的代碼意外地使用不等式將dict與int進行比較,結果發現任何dict在測試時都會計算為大於int的值。

d = {'a': 1, 'b': 2}
d > 0
Out[20]: True
d > 10e99999999999999
Out[21]: True

為什么會發生這種情況而不是類型錯誤?

這種情況在Python 2.7上運行

Python 2.7文檔

除了不同的數字類型和不同的字符串類型之外,不同類型的對象永遠不會相等; 這些對象是一致但任意排序的(因此排序異構數組會產生一致的結果)。

Python 3.3文檔改為:

在將復數與另一個內置數值類型進行比較時, 當對象具有無法比較的不同類型時 ,或者在沒有定義的其他情況下, <,<=,>和> =運算符將引發TypeError異常排序。

從Python 3開始,意味着您所看到的內容不再可能,但是這樣的比較會產生類似於您預期的TypeError

首先,Python團隊同意你的觀點 - 在Python 3中,這是一個錯誤。

在早期的Python版本中,所有內容都是可比較的,為了使它保持一致,某些類型總是在其他類型之前排序。

顯然在Python 2.7中,字典總是大於整數。 顯然它是按字母順序排列的?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM