2016-10-03 14 views
1

私は、最近のPythonを学び始め、私はリスト内包にコードの下の部分を変換する難しさに直面しています:私もそれを行うにためリスト内包変換

list = []  #An empty List 
    for key,value in defaultDict.items():#iterate through the default dict 
     for i in defaultDict[key]:#iterate through the list in the defaultDict 
      if i not in list:#If the item in the list is not present in the main list 
       list.append(i)#append it 

はそれが可能ですこれで任意の助けがある??とても有難い。

+0

あなたはすでに値を持っていますが、内部ループの必要はありません –

+0

@ OP:内部ループが必要です。 'value'自体がリストであるようです – inspectorG4dget

+0

' value'はリストですが、キー検索の代わりに 'value'を使うべきです –

答えて

4

非常に簡単:ネストされたリストの理解を使用して、すべてiと重複を削除するセットを取得します。

list(set([item for __, value in defaultDict.items() for item in value])) 

のは、それを打破してみましょう:

  • [item for key,value in defaultDict.items() for item in value]nested list comprehensionです。
  • set(...)は、すべての重複を削除します - if i not in list: list.append(i)ロジックと同等のものをあなたはあなたのためのリストに戻ってセットを変換します
  • list(set(...))
  • を持っています。
+0

うわー!!このソリューションはとてもコンパクトで素敵です!!恐ろしい男!!分けてくれてありがとう!!完璧です –

+0

助けてくれてありがとうございました:) –

+0

@ Nik.Birurこれが助けになったら、 –