2016-04-29 7 views
2

私はこの辞書(dic)のキーは文字列ですが、文字列は実際には数字です。キーが数値文字列であるソートされた辞書に対して反復処理を実行できないようです。どのように辞書をソートして反復するのですか?

私はソートされた文字列を反復処理する方法を見つけることができません(辞書のソート以来をしませんソート数値)

for j in sorted([int(k) for k in dic.iteritems()]): 
    print dic[str(j)] #converting the integer back into a string for the key 

それは

くれ

KeyError例外を与えます直感的にはこれはうまくいくはずですが、なぜ私はそれをしないのか分かりません。

答えて

8

dict.iteritems()は2タプルを返しますが、これはintに変換できません。

for _, value in sorted((int(key), dic[key]) for key in dic): 
    print(value) 

それはのように素敵ではないのですが、あなたはあなたの鍵だけでなく、自分の価値観だけでなく、解凍したい場合には、代替です:

for j in sorted(dic, key=int): 
    print dic[j] 
+1

非常に真、それは 'TypeError'、ない' KeyError'ことになります。 –

+2

@ LukasGraf:質問者が書いたものが正確であると仮定します。 –

+0

mg。これは非常にイライラして知っている。ちょうど何かがこれをする理由。私はあなたがソート(dic、key = int)することができたことを知りませんでした – Tom

0

別にkey=intを使用してからあなたも少し既存の理解を修正することができます。

あなたが理解で開梱の追加が必要iteritemsで

for _, value in sorted((int(key), value) for key, value in dic.iteritems()): 
    print(value) 
関連する問題