2016-08-25 3 views

答えて

0

それはあなたのために働くでしょうか?あなたはユニークなアイテムをしたいので

result = set([inner_list[1] for inner_list in l]) 
+0

しかし、それは一意でなければなりません.... –

+0

se私の答えにしてください。 – grael

+1

はい...合意しました! –

1

あなたは(理由はハッシュテーブルあちこちキーを使用しての)ために、ユニークなアイテムを保持し、第二のアイテムを取得するためにzip()を使用するためにcollections.OrderedDict.fromkeys()を使用することができます。

colls = zip(my_lists) 
next(colls) 
list(OrderedDict.fromkeys(next(colls))) 

それともdict.formkeys()内ジェネレータ式を使用します:

list(OrderedDict.fromkeys(i[1] for i in my_lists)) 

デモ:

>>> lst = [['a', 'b', 'c'], ['d', 'b', 'e'], ['f', 'z', 'g']] 
>>> 
>>> list(OrderedDict().fromkeys(sub[1] for sub in lst)) 
['b', 'z'] 
zip()以来のpython 3.xでは

from collections import OrderedDict 

list(OrderedDict.fromkeys(zip(my_lists)[2])) 

は、あなたがこれを行うことができますイテレータを返します。

0

私は2つのオプションが考えられます。

セット読解:

res = {x[1] for x in l} 

私はnumpyの配列がそう配列にこのリストを変換して高速化することができ、アレイの機能を使用して、より速くリスト/設定内包表記よりも仕事だと思います。ここで:

import numpy as np 

res = np.unique(np.array(l)[:, 1])  

は私に説明してみましょう:np.array(l)は、2D配列にリストを変換し、その後[:, 1]は、元l各サブリストの2番目の項目で構成されて(0からカウントを開始)は、第2の列を取り、そして最終的にはnp.uniqueを使用して一意の値のみを取ります。

1

あなたはリストのリストを解凍することができ、その後の選択以下のように設定した二組:私のラップトップで このコードテイク4.05311584473e-06ミリ秒内、

list(set(zip(*lst)[1])) 

入力:

lst = [['a', 'b', 'c'], ['d', 'b', 'e'], ['f', 'z', 'g']] 

出力:

['b', 'z'] 
関連する問題