2017-06-01 8 views
1

Ich habe eine Liste wie list = ['happy','angry','sad','emotion].Ersetzen mehrerer Zeichenfolge Wert in einer Liste Python

Deshalb möchte ich die Liste ersetzen und neue Liste wie

new_list=[1, 0, 0,'happy'] 

machen die meinen Code finden und es funktioniert nicht.

was wäre der richtige Weg, dies zu tun. Bitte hilf mir !

+1

Ich bin nicht sicher, der Betrogene ganz deckt, hier sowieso meine Antwort ist .... ersetzen ist ein String-Attribut, nicht für Listen. Ich schlage vor, verwenden Sie ein Wörterbuch mit einem Listenverständnis, um Ihre neuen Werte den alten zuzuordnen: 'd = {'glücklich': 1, 'wütend': 0, 'traurig': 0, 'Emotion': 'glücklich '}; [d.get (Artikel, Artikel) für Artikel in lst]; # [1, 0, 0, 'happy']; ' –

+2

Sie sagen, Ihre erwartete Ausgabe ist' [1, 0, 0, 'happy'] ', aber dann ersetzen Sie die Wörter durch _strings_, nicht durch Zahlen (' .replace ('glücklich', '1') '). Soll das Ergebnis also Integer oder Strings haben? –

+1

Sie müssen über Ihre Logik nachdenken und versuchen, sie generischer zu machen. Es sieht so aus, als ob du versuchst, die passende Emotion durch 1 und alle anderen durch 0 zu ersetzen (es sei denn, das Wort "Emotion" wird dann durch "Emotion" ersetzt, du kannst dies mit einem Verständnis tun: '[1 wenn e = = Emotion sonst Emotion wenn e == 'Emotion' sonst 0 für e in lst] '->' [1, 0, 0, 'glücklich'] ' – AChampion

Antwort

1
list = ['happy','angry','sad','emotion'] 
new_list = [int(y) if y.isdigit() else y for y in [x.replace('happy', '1').replace('angry', '0').replace('sad', '0').replace('emotion', 'happy') for x in list]] 

Wenn Sie mehr als diese vier Werte ersetzt werden sollen, wäre es sinnvoll, eine generalisierte ersetzen-Funktion, die mehrere Auswechslungen nimmt zu machen, z.B. zwei Listen.

EDIT: bei Fest Sie unbedingt wollen, Zahlen und keine Strings als Ausgabe

+0

Dies ist keine Arbeit –

+0

@Chathurika Jayawardana Fixed für Sie – tim

+0

Jetzt ist es so, wie ich es erwartet habe. Vielen Dank für die Antwort. –

Verwandte Themen