2017-07-13 10 views
0

辞書のリストとしてfirebaseからデータを取得しています。私がリストを印刷したとき、それは同じ順序ではありません。例えばアイテムのPython辞書ランダム出力

print(list(mydictionary.keys())[0]) 

これ0要素は、印刷が異なる出力を与えている、常に異なっています。私はデータベースで同じ順序で印刷したい、あるいはデータを最初にリストに入れたときと同じにしたい。出来ますか?

+0

Dictはあなたに注文を保証することはできません。どのようにしてFirebaseからデータを取得するのですか? firebaseからデータを取得している間にキーをリストに保存してみてください –

答えて

0

を見てみましょうsorted()

s = {0:1,h:t,1:1,10:2,2:1} for key,val in sorted(s.items()): print key, val

またはあなたのケースで

print(sorted(list(mydictionary.keys())[0]))

0

私はあなたが望むものがOrderedDictオブジェクトだと思います。これは、追加されたキーの順序を保持しています。 python2.7で+これはcollectionsモジュールの一部です:

>>> from collections import OrderedDict 
>>> a = OrderedDict() 
>>> a['blah'] = 4 
>>> a['other'] = 5 
>>> a['another'] = 6 
>>> print(a) 
OrderedDict([('blah', 4), ('other', 5), ('another', 6)]) 
>>> print(dict(a)) 
{'another': 6, 'blah': 4, 'other': 5} 

私はfirebase経験がないので、この答えは、この特定の使用では役に立たない可能性があります。

0

あなたは辞書は順序を保持していない理由としてOrderedDict

from collections import OrderedDict 

keys = list("1234") 
values = ["one", "two", "three", "four"] 

order_preserving_dict = OrderedDict(zip(keys, values)) 

を使用し、順序を保持したい場合は、私が説明することができますが、そのより良いあなたが関数を使用Why is the order in dictionaries and sets arbitrary?