2016-03-19 9 views
-2

Das ist, was ich versuche:Python-Listen - Kopieren Listenwert in neuer Liste

Ich habe eine Textdatei mit wenigen Zeilen Eingabe im Format - parameter value

Diese Textdatei wird Zeile für Zeile gelesen und Parameter & Werte werden als Listenelemente übernommen.

a = [] 
for line in fileinput.input(): 
    a.append((line.strip()).split(' ')) 
print a 

Ausgang:

[['parameter1': 'value1'], ['parameter2': 'value2'], ['parameter3': 'value3']] 

ich jetzt versuchen, diese Werte zu bewegen - Wert1, Wert2, Wert3, & so weiter - in eine neue Liste.

Ich kann das nicht herausfinden. Die Kopierfunktion kopiert die vollständige Liste. Verwenden Sie Schleifen, um diese Werte zu durchlaufen und an neue Listen anzuhängen? Ist es möglich, diese Werte beim Lesen aus der Textdatei direkt in die neue Liste einzufügen?

+1

Bitte zeigen Sie uns Ihre ** ** tatsächlichen Ausgang. Die Ausgabe in Ihrer Frage ist nicht gültig Python. – MattDMo

+0

@MattDMo mehr wie eine 'dict_list' – danidee

+0

@MattDMo-Ausgabe fehlten nur Leerzeichen. Fest. – Sunshine

Antwort

2

Sie können mit einer Liste Verständnis tun:

new_a = [sub[1] for sub in a] 

Sie auch dies tun könnte:

import operator 

new_a = list(map(operator.itemgetter(1), a)) 

Ein Äquivalent dass eine lambda Funktion zu verwenden ist:

new_a = list(map(lambda x: x[1], a)) 

Wie in einem Kommentar erwähnt, können Sie dies auch tun:

new_a = [value for parameter, value in a] 

Diese letzte wird einen Fehler werfen, wenn eine der Listen in a nicht von Länge zwei ist. Das könnte eine gute Sache oder eine schlechte Sache sein, je nachdem, was Sie wollen.

Sie können auch verwenden, um Ihre fügen Sie einfach for Schleife nur gerade das zweite Element:

a = [] 
for line in fileinput.input(): 
    a.append(line.split(' ')[1]) 
print a 

Ich muss gestehen, ich habe nicht einmal bemerken, dass, bis ich Flaschbier Antwort sah.

+0

Oder '[Wert für param, Wert in a]' –

+0

@tobias_k: Das stimmt. Ich habe das hinzugefügt. – zondo

+0

was von 'Liste (Karte (Lambda x: x [1], a))' – danidee

1
b.append(line.split(' ')[1]) 

nur die value aus jeder Zeile in eine andere Liste anhängen b Sie vor der Schleife vorbereitet haben.

Die Ausgabe des Programms von der Frage wird btw

[['parameter1', 'value1'], ['parameter2', 'value2'], ['parameter3', 'value3']] 

sein ...

Verwandte Themen