2017-10-23 4 views
0

Insbesondere habe ich einige Funktionen, die Bevölkerungsdaten aus bestimmten Staaten in den USA aus einer CSV-Datei nehmen. Der Statuscode ist das erste [0] Element in der Liste, also AK, oder MS, MT, usw. Er wird als ein Tupel mit Dingen wie (Staat, Landkreis, Bevölkerung usw.) gespeichert und zu einer Liste hinzugefügt; Datenliste [].Wie nehmen Sie Daten aus einem Tupel nur, wenn sie ein bestimmtes Element enthalten?

Ich fordere dann eine Eingabe von entweder einem bestimmten Zustand oder die Option, alle Daten durch Eingabe von "alle" zu sehen. Wie gehe ich durch jedes Tupel und hänge nur die gewünschten Zustände an?

Hier ist, was ich bisher haben (beachten Sie, dass ich, bevor diese andere Funktionen zu tun haben, sowie eine main(), aber sie scheinen alle an dieser Stelle gut zu funktionieren:

STATES={'AK','AL','etc.','etc.'} 
state = input("\nEnter state code or 'all' or 'quit': ") 
def extract_data(data_list,state): 
    state_list=[] 
    for tup in data_list: 
     if state=="all": 
      state_list= data_list 
     if state in STATES: 
      if tup[0]==state: 
       state_list.append(tup) 
    print(state_list) 

Wenn eine Klärung gibt es benötigt von anderen Funktionen, kann ich es zur Verfügung stellen, aber für den Moment gibt die Funktion nur alle Daten zurück, nicht nur den gewünschten Zustand.

Antwort

0

Ich habe es vielleicht schon herausgefunden, würde aber einige Eingaben lieben.Hier ist was ich geändert:

STATES={'AK','AL','etc.','etc.'} 
state = input("\nEnter state code or 'all' or 'quit': ") 
def extract_data(data_list,state): 
    state_list=[] 
    tup_data=[] 
    for tup in data_list: 
     if state=="all": 
      state_list= data_list 
     if state in STATES: 
      if tup[0]==state: 
       tup_data=tup 
       state_list.append(tup_data) 
    print(state_list) 

Das hat nur Daten für einen bestimmten Zustand ausgedruckt, also glaube ich, dass das alles ist, was ich brauche. Ich würde jedoch jedes Feedback für Verbesserungen oder ähnliches mögen.

3

Sie können dies tun, viel mehr sauber eine Liste Verständnis mit

def extract_data(data_list, state='all'): 
    if state == 'all': 
     return data_list 
    return [t for t in data_list if t[0] == state] 
Verwandte Themen