2017-11-29 28 views
-1

Ich möchte Unterliste einer Liste mit mehr als 300 000 Zeilen erhalten.Unterlisten in Python basierend auf Bedingung

line1 = [field1,field2,field3,code1] 

Wo code1 ist eine 5-Zeichenfolge

Ich mag würde in SQL so etwas wie eine select-Anweisung tun

select * from table where code1 = '78100' 

ich mit itertools tat die unten versucht, aber ich weiß nicht, wie um das grouperobject zu benutzen, das es zurückbringt.

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

uns Bitte zeigen Sie, was Sie, das Problem zu lösen, haben getan. Nur dann können wir Ihnen helfen. – RottenCandy

+1

Was hast du bisher gemacht? –

+0

bekommen den Index von Code 1 was ist das Problem darin? –

Antwort

0

sollte diese Arbeit:

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

Danke! Genau, aber ich möchte nicht über die 300 000 Zeilen jedes Mal iterieren – user3327567

+0

Was Sie so meinst du jedes Mal? Wie möchten Sie herausfinden, welche Zeilen Sie wünschen, wenn Sie nicht über die Zeilen iterieren? – mrCarnivore

+0

Ich suche nach einer Möglichkeit, die Erstellung dieser Unterliste zu beschleunigen, weil ich sie in meinem Skript einige hundert Mal erstellen werde. – user3327567

Verwandte Themen