辞書をループして、{'a':[1,2]、 'b':を入力すると、 3}、{'a':1、 'b':3}、{'a':2、 'b':3}を取得したい。Pythonでジェネレータを使用して辞書をループする
私は再帰的に働くだろうジェネレータを書き込もうとしました:
def loop_dic(dic, head={}):
if len(dic) == 0:
yield head
k = dic.keys()[0]
vals = dic[k]
dic.pop(k)
if not hasattr(vals, '__iter__'):
vals = [vals]
for v in vals:
_head = head.copy()
_head.update({k:v})
loop_dic(dic, _head)
が、それはGeneratorExitにつれて、それは、動作しません。最初の再帰呼び出しでなし。 これを行う方法は?
あなたは降伏from' 'に覚えていましたか? –
私は 'yield from'を使ったことがなく、Python 2.7を使っています。 – graham
これはまた、 'dic'を破壊的に修正して、ジェネレータが使い果たされるまでに空になるようにします。それは本当にあなたが望むものですか?ジェネレータが反復処理中のオブジェクトを破壊するのは非常に異常です。 –