2016-07-18 6 views
-3

だから私のようなので、数値と文字列の辞書を持っている:プリント辞書

d = {"Hi": None, 2110: 1110, 1110: None} 

そして、私は右から左にそれを印刷したいです。このように:

{1110: None, 2110: 1110, "Hi": None} 

どうすればいいですか?可能であれば、辞書は既に順序通りに並べ替えられていないので、順序を逆順にすることは避けてください。逆順で並べ替えるよりも時間がかかりません。私が間違っているなら、私を修正してください。

+5

dictsは、一般的に特定の順序であると仮定されていません。 – khelwood

+1

まず第一に、辞書には何の命令もありません。あなたが注文について心配するなら 'orderdict 'を使用してください –

+2

最初の質問は次のとおりです:なぜこれをしたいですか? –

答えて

0

あなたはこれを達成するために以下のコードを使用することができます:

d = {"Hi": None, 2110: 1110, 1110: None} 
print str(d) 
print '{' + ','.join(str(d)[1:-1].split(',')[::-1]) + '}' 

しかし、実際の辞書は、すべての任意の順序を持​​っていないと私はあなたが多分代わりに注文した辞書を使用することを考慮したいと思います。

+0

これでも順序は保持されません。 OPは 'OrderedDict'を使用する必要があります – RoadRunner

+0

私は私の答えにメモを追加しました。 – Ohumeronen

0

あなたはcollectionsモジュールからOrderedDictを使用しなければならない、とあなたは辞書はタプルのリストがすでにOrderedDictを使用して注文しなければならないであろう始めているので、あなたは、最初の辞書の順序を保持することができます。 OrderedDictは、挿入されたキーの順序を記憶しているので、これが必要です。

from collections import OrderedDict 

d = OrderedDict([("Hi", None), (2110, 1110), (1110, None)]) 

result = OrderedDict(list(d.items())[::-1]) 
print(result) 

出力:

OrderedDict([(1110, None), (2110, 1110), ('Hi', None)]) # remains this order always