2017-08-05 5 views
0

key()の出力は、keyがclass objectのときに毎回変わります。キーがクラスオブジェクトであるときに、いつもpython dict.keys()の順序が変わるのですか?

class test: 
    def __init__(self, path): 
     self.path = path 

    def __str__(self): 
     return str(self.path) 

didi = dict() 
for i in range(100): 
    didi[test(1)] = 2 
    didi[test(2)] = 3 
    didi[test(3)] = 4 

for i in didi.keys(): 
    print i 

キーをインターガーに変更すると、その順序は常に同じになります。

didi = dict() 
for i in range(100): 
    didi[i] = i+1 

for i in didi.keys(): 
    print i 
  1. なぜクラスの順序は毎回変更されますか?
  2. dict orderも毎回変わることはありますか?
+0

は何のpythonバージョンあなたはこれを使用して実行しますか?そしてあなたが得たアウトプットを投稿することはできますか? – bagrat

+0

@bagrat私のpythonバージョンは2.7.10です。私は価値の代わりに注文を心配しているので、私はアウトプットを出しませんでした。キーがクラスオブジェクトであるときに実行するたびに順序が変わります。 OrderedDictによる注文の問題を解決しましたが、私はまだ注文ルールがintergerとクラスオブジェクト間で異なる理由を知りたいと思います。 –

答えて

関連する問題