2017-11-08 8 views
0

私は3要素のタプルのリストを持っています。私は保存された順序でそれを辞書に変換したい。3要素のタプルのリストを順序付けられた辞書に変換する

>>> a = [('one', '0', '1'), ('two', '0', '0'), ('three', '1', '1')] 
>>> x = OrderedDict({sb[0]: sb[1:] for sb in a}) 
>>> x 
OrderedDict([('three', ('1', '1')), ('two', ('0', '0')), ('one', ('0', '1'))]) 

私は注文が変更されているのを、わかりません。誰かがこの問題を解決するのを助けてくれますか?

答えて

2
...{...}.. 

おっと。

OrderedDict(((sb[0], sb[1:]) for sb in a)) 
+0

これらの括弧は必要ありません。関数(またはこの場合のコンストラクタ)への唯一の引数がgenexprである場合、呼び出しはgenexprの括弧の2倍であるため、これはうまくいきます: 'OrderedDict((sb [0]、sb [1:])in sb in a) '。重要なのは、 'dict'を最初に作ってしまえばすでにオーダーを失っているので、' OrderedDict'はそれを回復できないので、 '{}'を削除することです( 'dict'の理解になります)。 – ShadowRanger

関連する問題