2016-11-14 5 views
0

Sagen, ich habe zwei Listen:Element für Element Verkettung in Python

header = ['a', 'b', 'c', 'd'] 
data_type = ['str', 'str', 'float64', 'float64'] 

Wie erhalte ich eine kombinierte Liste wie folgt aus:

data_type = {'a':str, 'b':str, 'c':float64, 'd':float64} 

Dieses verwendet wird dtype in pd.read_csv Methode zu definieren.

+1

'str', ohne Anführungszeichen ?? (gültig, aber verdächtig) –

+0

https://docs.python.org/2/library/itertools.html#itertools.izip –

+0

@KarolyHorvath und umgekehrt: 'float64' ohne Anführungszeichen? gültig?? vielleicht in Pandas? –

Antwort

6

Schnellste:

header = ['a', 'b', 'c', 'd'] 
data_type = ['str', 'str', 'float64', 'float64'] 
dict(zip(header, data_type)) 

die Idee ist: zwei Listen mit zip Funktion verschmolzen (https://docs.python.org/2/library/functions.html#zip) und als produziert Tupel von Tupeln mit dict Funktion Zum Wörterbuch umgewandelt.

+0

Fair genug, wird die Antwort aktualisieren –

+0

@JulienMarrec Es tut mir leid, Bruder. Ich habe keine Ahnung, wie es passiert ist. –

+0

@JulienMarrec das kann nicht 1 Person sein, die sicher ist. Vielleicht, weil du dasselbe nach Andrey geantwortet hast? 'Pandas' Fragen sind manchmal hart für reine Python-Beantworter. –

1

Aus Ihrer Frage scheint es Sie tatsächlich einen Datentyp (Python Schlüsselwort) und kein String eines Datentyps zurückkehren wollen, so würde ich ein dict Verständnis mit eval verwenden, das ist, wie ich es tun würde:

from numpy import float64 
{header[i]:eval(data_type[i]) for i in range(len(header))} 

{'a': str, 'b': str, 'c': numpy.float64, 'd': numpy.float64} 
auch

beachten Sie, dass die dict Verständnis Option ist etwas langsamer, bei 1,91 & mgr; s pro Schleife im Vergleich zu 1,62 & mgr; s pro Schleife für die dict + zip Option

+0

Wie zur Hölle hat das 3 Downvotes in 10 verdammten Sekunden bekommen? –

+0

Ich habe deine Antwort aufgestockt, nur weil es nicht fair ist, so viele Downvotes zu bekommen. –

+1

Ich habe auch Ihre Antwort upvoted, weil es hilft, ein paar Konzepte für mich zu klären. Meine zweite Woche mit Python. –