Ich versuche, einige Funktionen in MATLAB in Python zu replizieren und bin auf der Suche nach einer pythonischen Art, um dieses Problem zu lösen.Zugriff auf Dictionary-Werte in einer Liste
Betrachten Sie das folgende Beispiel.
import io
import csv
data = """name,age,height
scott,31,175
bob,45,180
george,2,100
"""
f = io.StringIO(data)
reader = csv.reader(f, delimiter=',')
fields = next(reader)
table = []
for row in reader:
item = dict(zip(fields, row))
table.append(item)
Einige Daten importiert werden, ist jede Zeile ein Element in einer Liste und jede Spalte ist gepaart mit ihm in einem Wörterbuch Feldname ist.
ein einzelnes Feld eines bestimmten Elements Zugriff ist einfach
>>> table[1]['name']
'bob'
Wie kann ich alle Werte des ‚name‘ Feld in der Tabelle zurückzukehren, mit der Ausnahme entweder eine for-Schleife oder einer Liste Verständnis?
ages = [x['age'] for x in table]
In MATLAB konnte ich die folgende
ages = [table(:).age]
die ein Array Alter des enthält jeder zurückkehren würde.
Gibt es eine Möglichkeit, alle Elemente eines einzelnen Felds aus einer Liste von Elementen zurückzugeben? Oder ist das Listenverständnis der beste Weg?
[EDIT]: Wie wäre es wenn ich nur auf die ersten 2 Elemente zugreifen und ihre Felder bekommen möchte? Oder die letzten 2 Elemente? List Verständnis noch der beste Weg zu gehen?
Vielleicht gibt es eine bessere Datenstruktur, um dies zu ermöglichen?
Was stimmt nicht mit der Liste Verständnis? –
Was passiert, wenn ich nur 'nur die letzten 3 Elemente' auswählen möchte? – scotty3785
Sie sollten wahrscheinlich einen Pandas 'DataFrame' dafür verwenden. Es entspricht einer MATLAB-Tabelle (tatsächlich basieren MATLAB-Tabellen entweder auf Pandas-Datenrahmen oder einer ähnlichen Datenstruktur von R). – TheBlackCat