2016-06-16 6 views
-3

この質問は何度も尋ねられています。ここ は私の質問の例です:Python辞書を逆順に並べて返します

dict = {"a":"1", "b":"2", "c":"3"}

私が探しています出力は以下の通りです:

dict = {"c":"3", "b":"2", "a":"1"}

ここに私があるように私は、これを攻撃するかどうかは本当にわかりませんよ現在のコード:

def reorder(a): 
     clean = {} 
     pair = {} 
     i = 0 
     for k, v in a.iteritems(): 
      pair = a.popitem() 
      #Do stuff here 
     return clean 

私が現在行っていることは、キー/ valとしてタプルペアをつかんでいます。これらは同じままである必要があるので、ue。私はどのように逆の順序でこのペアを挿入するか分からない。

+1

あなたの勤勉な検索は[この質問を忘れました](http://stackoverflow.com/questions/6083531/order-of-keys-in-python-dictionary)。 –

答えて

0

dictionary定義によって順不同次のとおりです。キーが1以内(一意である必要条件と値のペア、:それはキーの順不同セットとして辞書を考えるのがベストです

辞書)。

したがって、質問には答えられず、別のデータ構造の使用を検討する必要があります。

>>> import collections 
>>> dict = collections.OrderedDict([(1,2),(3,4),(5,6)]) 
>>> collections.OrderedDict(reversed(list(dict.items()))) 
OrderedDict([(5, 6), (3, 4), (1, 2)]) 
+0

本当にありがとうございました。残念ながら現時点ではデータ構造を変更することはできませんが、データ構造は変更することはできません。手動でこれを行うことはできますか? 私は上のコードで考えていた、タプルをつかんで、別の関数に送信します。この関数を使ってタプルをメモリに保存し、それを0,1,2,3などの値に割り当て、forループを使用してタプルを新しい辞書に逆方向に挿入します –

+1

私が言ったように、**可能な方法はありません**辞書を使用し続け、 "逆"という言葉が辞書に意味を持たないので、 "逆"にする...あなたが項目を 'リスト'に入れて逆にすることができれば助かります... – Idos

+0

何新しい辞書を作成し、キー/値のペアを指定した方法で挿入することについて –

0

まず、パイソンのdictオブジェクトはハッシュテーブルであり、それには順序がありません:。逆にすることができる多分OrderedDict しかし、リストを取得したいだけの場合は、sorted(iterable, key=None, reverse=False)メソッドを使用することができます。 def order(dic): return sorted(dic.items(),key=lambda x:x[1],reverse=True)

関連する問題