2017-01-11 18 views
0

안녕하세요 파이썬이 같은 큰 데이터 세트를 가지고 :고유 한 데이터를 정렬하고 가져 오는 가장 빠른 방법입니다. 마지막 발생을 원하십니까?

data=[[2105,90], 
     [2115,100], 
     [2125,110], 
     [2135,120], 
     [2145,130], 
     [2155,140], 
     [2200,110], 
     [2115,109], 
     [2155,142]] 

데이터가 마지막에 출현 어디에서 나는 결과를 원한다. 당신은 단지 사전에 data을 넣을 수 있습니다

data=[[2105,90], 
     [2115,109], 
     [2125,110], 
     [2135,120], 
     [2145,130], 
     [2155,142], 
     [2200,110]] 
+4

몇 가지 코드를 작성해 주셨습니다. 대부분의 사용자는 곤경에 처한 코더 코드를 기꺼이 만들지 만 일반적으로 포스터가 이미 문제를 해결하려고 시도했을 때만 도움이됩니다. 이러한 노력을 입증하는 좋은 방법은 지금까지 작성한 코드, 예제 입력 (있는 경우), 예상 출력 및 실제로 얻은 출력 (콘솔 출력, 역 추적 등)을 포함시키는 것입니다. 더 자세하게 제공할수록 더 많은 답변을받을 수 있습니다. [FAQ]와 [ask]를 확인하십시오. – MooingRawr

+1

그냥 dict에 보내십시오'dict (data) ' –

+0

데이터 세트가 정렬되어 있습니까? – user2314737

답변

3

: 예에서 나는 2115 = 109과 2155 = 142 원하고

>>> data 
[[2105, 90], [2115, 100], [2125, 110], [2135, 120], [2145, 130], [2155, 140], [2200, 110], [2115, 109], [2155, 142]] 
>>> dict(data)[2115] 
109 
>>> dict(data)[2155] 
142 

사전이 고유 키가 있습니다. 목록에서 더 많은 항목이 추가되면 (기존 )이 업데이트됩니다. 이것은 마지막 발생을 가져옵니다.

-1

Red Black BST's을 사용하여 정보를 저장할 수 있습니다. 이렇게하면 노드 수가 적을 때만 트래 피킹하면됩니다. 이것은 대부분의 경우 유용합니다 (트리가 절반으로 계속 분할되기 때문입니다).

0

위의 두 가지 모두에 대한 답변. 3 세트의 데이터 파일이 있습니다. 각 세트에는 약 1 백만 개의 파일이 있습니다. 위 예제에서 fileset1의 6 값, fileset2의 값 1, fileset3의 값 1을가집니다.

value={} 
for j in ['*1981*.txt','*1990*.txt','*1991*.txt']: 
    files=glob.glob(j) 
    files.sort() 
    for file in files: 
     inFile=open(file, 'r') 
     for line in inFile: 
      if cregexp2.match(line): 
       a=cregexp2.findall(line)[0] 
       value[a[0]]=a[1] 

이 작업 한 솔루션입니다하지만 약간의 시간이 소요 :이 (정규 표현식 일치 할 때 내가 데이터를 얻을)와 같은 사전의 끝 솔루션이 될 것입니다. 더 나은 방법에 대한 아이디어가있는 사람이 있습니까?