2015-03-02 21 views
-5

我正準備參加python認證考試,並發現這些問題仍未解決。請幫忙。python dictonaries中的條件運算符和集合

http://www.vskills.in/certification/practice-test/Information-Technology/Python/Python-Test-Set/Python-Developer-Test-Set-5

a = {2,2,3,4} 
b = {1,2,3} 
>>> b<a 
False 
>>> a<b 
False 

高達2.7蟒蛇這也適用現在,我認爲他們有固定的。

{1:2,2:3,3:4}<{2:5,3:6,4:7,5:8} 
True 
[1,2,3]==(1,2,3) 
False 

我的問題是他們在這些類型的條件運算符上是否存在字典。

回答

1

Python 2試圖爲幾乎所有東西提供排序順序;字典也不例外。

字典是arbitrarily but consistently ordered當相互比較,以確保您可以排序包含它們的異源列表。真的,你不應該從它們的比較中得出任何意義。

Python 3放棄了所有對象應相對於彼此排序的概念,並且在字典上使用除平等和身份之外的比較運算符會引發TypeError

將過載比較運算符設置爲信號子集。如果set_aset_b的子集,則set_a < set_b爲真。請參閱set types documentation

要翻譯這一切都在您的具體的例子:

  • 你兩套都沒有彼此的子集;一個值爲4,另一個值爲1,它們不共享。測試子集在兩個方向都失敗。
  • {1:2,2:3,3:4} < {2:5,3:6,4:7,5:8}是真的,因爲第一個字典的鍵較少。選擇是任意的,除此之外沒有任何特定的含義,這意味着兩個字典將始終在一個Python版本內一致地排序。
  • 您最後一個示例比較了兩種不同的類型。元組永遠不會等於列表,即使它們具有相同的內容。