ネストされたリストに個別の値をインデックス化like:は、特定の取得のように、私は約1万レコードのネストされたリストを持っている
resultant = ['b', 'z', ...]
ネストされたループを試しましたが、速くはありません。
ネストされたリストに個別の値をインデックス化like:は、特定の取得のように、私は約1万レコードのネストされたリストを持っている
resultant = ['b', 'z', ...]
ネストされたループを試しましたが、速くはありません。
それはあなたのために働くでしょうか?あなたはユニークなアイテムをしたいので
result = set([inner_list[1] for inner_list in l])
あなたは(理由はハッシュテーブルあちこちキーを使用しての)ために、ユニークなアイテムを保持し、第二のアイテムを取得するために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]))
は、あなたがこれを行うことができますイテレータを返します。
私は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
を使用して一意の値のみを取ります。
あなたはリストのリストを解凍することができ、その後の選択以下のように設定した二組:私のラップトップで このコードテイク4.05311584473e-06ミリ秒内、
list(set(zip(*lst)[1]))
入力:
lst = [['a', 'b', 'c'], ['d', 'b', 'e'], ['f', 'z', 'g']]
出力:
['b', 'z']
しかし、それは一意でなければなりません.... –
se私の答えにしてください。 – grael
はい...合意しました! –