次のような Python の辞書があります。
D = {1:'a', 5:'b', 2:'a', 7:'a'}
キーの値はほとんど無関係です。キーを数値順に辞書を反復処理する方法はありますか? キーはすべて整数です。
と言う代わりに
for key in D:
# some code...
辞書のキーを順番に見ていくことはできます1, 2, 5, 7
か?
また、並べ替え/並べ替え機能を使用できません。
次のような Python の辞書があります。
D = {1:'a', 5:'b', 2:'a', 7:'a'}
キーの値はほとんど無関係です。キーを数値順に辞書を反復処理する方法はありますか? キーはすべて整数です。
と言う代わりに
for key in D:
# some code...
辞書のキーを順番に見ていくことはできます1, 2, 5, 7
か?
また、並べ替え/並べ替え機能を使用できません。
あなたはこれを使うことができます:
for key in sorted(D.iterkeys()):
.. code ..
Python 3.xでは、を使用します( Python 2.xD.keys()
と同じです)。D.iterkeys()
並べ替えたくないという規定を考慮し、キーがすべて整数であると仮定すると、キーの最大値と最小値を簡単に見つけて、その範囲を反復処理し、それぞれが実際に辞書にあるかどうかを確認できます。
for key in xrange(min(D), max(D) + 1):
if key in D:
print D[key]
もちろん、これはあまり効率的ではありませんが、機能し、並べ替えを回避します。
キー/値が順番に挿入されると仮定すると、OrderedDictを使用できます。
>>> from collections import OrderedDict
>>> d = OrderedDict()
>>> d[1] = 'a'
>>> d[2] = 'a'
>>> d[5] = 'b'
>>> d[7] = 'a'
>>> d
OrderedDict([(1, 'a'), (2, 'a'), (5, 'b'), (7, 'a')])
>>> d.keys()
[1, 2, 5, 7]
を使用してキーのリストを取得し、リストのdict.keys()
並べ替えられたビューを反復処理できます。
for key in sorted(D.keys()):
print key, D[key]