2017-09-08 10 views
0
dict1={'s':1,'a':2} 
dict1.keys() 

回 '' '、' s '}と他の時間{' s '、' a}} なぜですか?なぜkeys関数は、Pythonでランダムな順序でキーを返しますか?

set1={'a','b'} 
    set2={'b','c'} 
    print(set1 | set2) 

時間{ 'A'、 'B'、 'C​​'}、二度目一度:等{ 'C'、 'B'、 'A'}と なぜ? 決定的な順序で印刷するにはどうすればよいですか?

+3

'dict'sと' set'sは_ ** un-ordered ** _データ構造です。作成時にはランダムな順序があり、辞書が操作されると変更されます。 –

+0

'No order'は 'random order'より正確です。あなたはいくつかの基準でキーを並べ替えることができます。 「辞書キーのソート方法」のようなものを見つけてください。 – AsheKetchum

+0

辞書でのキーの順序は、キーで計算されたキーのハッシュに基づいて設定されるためです。ハッシュ関数は内部であり、_Python_リリース間で変更される可能性があります。 – CristiFati

答えて

0

お願いsorted決定論的順序のためのdictキー。

dict1={'s':1,'a':2} 
print(sorted(dict1.keys())) 
+0

'sorted(dict1)'で十分です。 – chepner

0

dictには、順序キーがあるとは限りません。 特定の順序でキーを取得する必要がある場合は、コレクションからOrderedDictを使用してください。

>>> b = OrderedDict([('k1','v1'),('k2','v2')]) 
>>> b.keys() 
['k1', 'k2'] 
関連する問題