2017-07-22 11 views
0

私は列A、B、C、Dのリストを持っており、一意のD列の値のグループによってリストを再フォーマットしたいと考えました。その後、Pythonを使用してリスト内の一意の列値でグループ化します

list=[d1[[1,11,n1],[1,22,n2]],d2[[3,33,n3]] 

とD1の下にあるすべてのリストを印刷:

[1,11,n1],[1,22,n2] 
+0

は、[辞書]のための完全な時間のようですね:-)

希望はこのことができます(http://anh.cs.luc.edu/python/hands-on/3.1/handsonHtml/dictionaries.html) 。 –

+0

あなたは空白にリンクしているのですか? – ktdrv

+0

@ktdrvあなたは正しいです、それはあなたのせいではありません。イメージをアップロードしようとしていて、正直にアップロードされていない、初めてのことです。 –

答えて

2

あなたが興味のある分野を抽出するためにoperator.itemgetter()を使用することができます(フィールド3出力期待 一覧

List Picture

Dの列です)。そして、共通鍵でグループを抽出するためにitertools.groupby()を使用します。あなただけのd1グループを印刷したい場合は

>>> from operator import itemgetter 
>>> from itertools import groupby 
>>> data = [ [1, 11,'n1','d1'], 
     [2, 22, 'n2', 'd1'], 
     [3, 33, 'n3', 'd2'], 
] 
>>> data.sort(key=itemgetter(3)) # sort by column d 
>>> result = [] 
>>> for k, groups in groupby(data, key=itemgetter(3)): 
     entry = [group[:-1] for group in groups] 
     result.append((k, entry)) 

>>> result 
[('d1', [[1, 11, 'n1'], [2, 22, 'n2']]), ('d2', [[3, 33, 'n3']])] 

、コードはさらに簡単です:

>>> for k, groups in groupby(data, key=itemgetter(3)): 
     if k == 'd1': 
      print([group[:-1] for group in groups]) 

[[1, 11, 'n1'], [2, 22, 'n2']] 

コード[group[:-1] for group in groups]slicingを使用し、list comprehensionへ予想される出力に示されているようにキーフィールドを削除します。

+0

リストにはd1値があります。出力の一部として期待していなかったからです。 –

+0

@AMOLKHADEそれを反映する答えも更新しました。しかし、StackOverflowでは、誰かにあなたのためにプログラム全体を書くように依頼するのではなく、あなた自身が少なくともいくつかの作業を行うことが期待されます。 –

+0

更新いただきありがとうございます。クエリの最終部分を取得するために、どのようにアクセスするのか分かりますか? 'd1 i:e [1,11、n1]、[1,22、n2]'の下にすべてのリストを表示してください –

関連する問題