2017-11-29 11 views
-1

나는 300,000 개가 넘는 라인을 가진리스트의 서브리스트를 얻고 싶습니다. 코드 1이 5 문자열을입니다조건에 따른 파이썬의 서브리스트

line1 = [field1,field2,field3,code1] 

내가 SQL에서 SELECT 문처럼 내가 itertools와 함께 아래의 일을 시도

select * from table where code1 = '78100' 

을 뭔가를하고 싶은

하지만 난 방법을 모른다 그것을 반환하는 grouperobject를 사용합니다.

import csv 
import sys 
reload(sys) 
sys.setdefaultencoding('utf8') 

with open(r"csvfile", "rU") as f: 

    reader = csv.DictReader(f,delimiter=';') 
    sortedreader = sorted(reader, key=lambda d: (d['insee'])) 
    groups = groupby(sortedreader, key=lambda d: (d['insee'])) 
+1

이 문제를 해결하기 위해 한 일을 우리에게 보여주십시오. 그래야만 우리가 당신을 도울 수있을 것입니다. – RottenCandy

+1

지금까지 무엇을 했습니까? –

+0

코드 1의 색인을 얻으십시오. 그 문제는 무엇입니까? –

답변

0

이 작동합니다 :

long_list = [[1, 2, 3, '12345'], 
      [1, 2, 3, '78100']] 

def filter_list(long_list, pos, value): 
    filtered_list = [] 
    for line in long_list: 
     if line[pos] == value: 
      filtered_list += line 
    return filtered_list 


print(filter_list(long_list, 3, '78100')) 
+0

감사합니다! 정확히 300000 회선을 반복하지 않으려 고합니다. – user3327567

+0

왜 그렇게 생각합니까? 언제나? 원하는 라인을 반복하지 않는다면 원하는 라인을 어떻게 찾고 싶습니까? – mrCarnivore

+0

나는이 스크립트를 내 스크립트에서 몇 백 번 생성하기 때문에이 하위 목록의 생성 속도를 높이는 방법을 찾고있다. – user3327567