2016-10-14 13 views
0

私はループのため、このネストされた変換しようとしている:、1つのライナーにPythonでジェネレータを使ってネストされたforループを作る方法は?

 for k,v in all_R.iteritems(): 
      for pairs in v: 
       print pairs[1] 

このような何か:

print ([pairs[1] for pairs in v for k,v in all_R.iteritems()]) 

をしかし、私はこのエラーを取得しています:

UnboundLocalError: local variable 'v' referenced before assignment 

all_Rはすべての値がペアであるキーを持ち、そのペアからの1つの値だけに興味があります。

01あなたができる、の
 {'1-0002': [('A-75G', 'dnaN'), ('I245T', 'recF'),... ], '1-0004': [('A-75G', 'dnaN'), ('L161', 'dnaN'),...]} 

答えて

2

リストの内包表記は、forループと同じ順序で書かれているので、あなたがあなたのタイトルが示唆するように発電機を使用することを探しているなら、あなたは実際に print ([pairs[1] for k,v in all_R.iteritems() for pairs in v ])

(順序が逆にされることに注意してください)を探しています角かっこの代わりにかっこを使用してください。 (pairs[1] for k,v in all_R.iteritems() for pairs in v)

これにより、目的のプロパティを持つジェネレータが作成されます。

+0

完璧!ありがとう! – FairyDuster

関連する問題