これは基本的に反復を行うサンプルコードです。
>>> d = {'lol': {'12': '3', '35':''}, 'w': {'12': '3', '35':''}}
>>> def iteritems(s):
... keys = s.keys()
... for key in keys:
... yield key, s[key]
...
>>> for k, v in iteritems(d):
... print k, v
...
w {'12': '3', '35': ''}
lol {'12': '3', '35': ''}
これは有効なジェネレーターです。ただし、ジェネレーターは、辞書内のすべてのキーをキャッシュするiteritems
ために呼び出す必要があります。s.keys()
ディクショナリが大きい場合 (100 項目以上)、メモリ効率が良くありません。
しかし、ディクショナリは順序付けられた構造ではないため、キーのリストを取得する必要があると思います。
キーの数は、キーと値を数えるアイテムの数よりもはるかに少ないと主張する人もいるかもしれません。
なにか提案を?または、より良い方法です(もちろん、ネストされた反復をサポートする必要がありますが、それは別のことです)。