2016-03-28 13 views
0

SQLテーブルからlist_of_listを考えると、私は、例えば、カラム1 の同じ要素に対して、パイソン - ネストGROUPBY文

を与えられ、2列の同じ要素にlist_of_list分割隣接する行のセットを分析したいです
list_of_list = [[1,1,3,2], 
[1,3,3,2], 
[1,3,6,2], 
[1,3,6,2], 
[1,5,5,2], 
[1,3,5,2]] 

私は、次のコードで何が悪い出力

[1,1,3,2] 

[1,3,3,2] 

[1,3,6,2] 
[1,3,6,2] 

[1,5,5,2] 

[1,3,5,2] 

を以下に取得したいのですが?

for key1, items1 in groupby(list_of_list, itemgetter(2)): 
    for key2, items2 in groupby(items1, itemgetter(1)): 
     for i in items2: 
      print(i) 
      print 

コメントで述べたように、それは次のように出力

[1,1,3,2] 

[1,3,3,2] 

[1,3,6,2] 

[1,3,6,2] 

[1,5,5,2] 

[1,3,5,2] 
+0

サンプル 'list_of_list'と期待される出力を教えてください。 'print(i)'のように、それが何を印刷するのかを教えてください。 – Bahrom

+0

例を追加しました – user1403546

+0

あなたのコードはすでにそれを行いましたが、最後に1レベル印刷した後に – Bahrom

答えて

1

を返しますが、最後printの文インデント解除すれば、あなたのコードは正常に動作します:の最初の要素を取得するには

for key1, items1 in groupby(list_of_list, itemgetter(2)): 
    for key2, items2 in groupby(items1, itemgetter(1)): 
     for i in items2: 
      print(i) 
     print 

items2nextは次のように使用できます。

first_of_items2 = next(items2, 'items2 was empty') 
+0

"for key、groupbyの項目(list_of_list、itemgetter(2,1))"のように見えますが、同じ効果が得られます。それを使用するのが公正な方法であることを確認できますか? – user1403546

+0

そうだとすれば、ドキュメントをチェックすることができます。私は今夜​​帰宅するときも見ていきます。それはあたかも1つずつグループ化されているように見えるので、それはうまくいくはずです。 – Bahrom

+0

ありがとうございました! – user1403546