2016-07-21 7 views
-4

Pythonで辞書の順番について質問があります。結果は、標準のPython実装でPythonでの辞書の順番はどうですか?

dad 
bob 
nurse 
cat 

ませ

dad 
cat 
bob 
nurse 
+0

辞書には順序がありません – njzk2

+0

ドキュメントを参照してください:https://docs.python.org/3/tutorial/datastructures.html#dictionaries – avtomaton

+4

[なぜPythonの辞書とセットの順序が恣意的なのですか? ](http://stackoverflow.com/questions/15479928/why-is-the-order-in-python-dictionaries-and-sets-任意) – cdarke

答えて

1

を示し、なぜ私は、Python 2.7

array ={"dad":"nse","cat":"error","bob":"das","nurse":"hello"} 

for key in array: 
    print key 

で午前、CPythonのは、辞書はper the docs、何の保証秩序を持っていません。

0

Python documentationによれば、辞書の要素には順序がありません。 Pythonは、あなたが選んだ順番どおりにエントリを返すことができます。ご注文のある辞書をご希望の場合はOrderedDictをご利用ください。しかし、それは順序を維持しなければならないので、このコレクションは通常のDictよりもパフォーマンスが劣ります。

0

はい、私は同意し、辞書には、それは常にその人生を:)住んでいるが、この例のチェックアウトを意味し、独立したデータ構造である:出力付き

from collections import OrderedDict 
days = {"Monday": 1, "Tuesday": 2, "Wednesday": 3, "Thursday": 4, "Friday": 5} 
print days 
sorted_days = OrderedDict(sorted(days.items(), key=lambda t: t[1])) 
print sorted_days 
print list(days)[0] 
print list(sorted_days)[0] 

{'Friday': 5, 'Tuesday': 2, 'Thursday': 4, 'Wednesday': 3, 'Monday': 1} 
OrderedDict([('Monday', 1), ('Tuesday', 2), ('Wednesday', 3), ('Thursday', 4), ('Friday', 5)]) 
Friday 
Monday 

では、ラムダ式t[1]が示すとおり:何に応じて、辞書がソートされます。だから私はそれが問題を解決するかもしれないと思う。

しかし、なぜ辞書にそのような注文が印刷されているのか厳密な答えが見つかりませんでした。私はそれが記憶の問題だと思います。辞書はそれ自身を整理します。

関連する問題