내가 좋아하는 약 100 만 기록을 중첩 된 목록을 가지고 같은 :얻기 특정 인덱스 고유 값은
resultant = ['b', 'z', ...]
내가 중첩 루프하지만이 시도는 빨리하지, 어떤 도움이 이해할 수있을 것이다!
내가 좋아하는 약 100 만 기록을 중첩 된 목록을 가지고 같은 :얻기 특정 인덱스 고유 값은
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()
이후 파이썬 3.x의에서
from collections import OrderedDict
list(OrderedDict.fromkeys(zip(my_lists)[2]))
는이 작업을 수행 할 수있는 반복자를 반환
두 가지 옵션을 생각해 볼 수 있습니다.
설정 이해 :
res = {x[1] for x in l}
나는 NumPy와 배열이 너무 배열이 목록을 변환하고 빠를 수 있습니다 배열 함수를 사용하여 빠른 목록 설정/지능형 이상의 일을 생각한다. 여기 : 원래 l
의 각 하위 목록의 두 번째 항목으로 구성되어있는 (0부터 계산하기 시작) np.array(l)
후 [:, 1]
는 두 번째 열을 2 차원 배열에 목록을 변환하고, :
import numpy as np
res = np.unique(np.array(l)[:, 1])
는 설명해 드리죠 마지막으로 np.unique
을 사용하여 유일한 값만 가져옵니다.
당신은리스트의 목록을 압축을 해제 할 수 있습니다 후 선택 아래와 같이 세트로 두 번째 튜플 : 내 노트북에 이 코드 걸릴 4.05311584473e-06 millseconds,
list(set(zip(*lst)[1]))
입력 :
lst = [['a', 'b', 'c'], ['d', 'b', 'e'], ['f', 'z', 'g']]
출력 :
['b', 'z']
하지만 고유해야합니다 .... –
se 내 대답에. – grael
예 ... 합의! –