2016-08-09 407 views
-2

Zum Beispiel habe ich Wörterbücher innerhalb Liste,Was ist der beste Weg, um die Wörterbücher Wert in der Liste zu filtern und entfernen Sie das Wörterbuch aus der Liste

student_list = [{'name':'ABC', 'marks': 8}, {'name':'DEF', 'marks': 0}, {'name': 'GHI', 'marks': 0}, {'name': 'JKL', 'marks': 0}, {'name': 'JKL', 'marks': 9}] 

Ausgabe sein sollte,

[{'name':'ABC', 'marks': 8}, {'name': 'JKL', 'marks': 9}] 

Was ist der beste Weg, dies zu tun.

Ich kann forloop verwenden, um diese Ausgabe zu erhalten, aber ich möchte dies mit der Python-Funktion built_in bieten oder dies ohne Verwendung von forloop behandeln.

+1

Bitte seien Sie spezifisch: Sie wollen die Wörterbücher, in denen der Wert, der mit dem Schlüssel '' marks' 'verbunden ist, nicht Null ist? –

+0

Bitte nicht "Forloop" in Code-Formatierung. 'Forloop' ist ein Name, kein Code –

+0

Wir machen deine Hausaufgaben nicht. Bitte lesen [fragen]. Sie müssen Ihre Forschungsergebnisse und was Sie versucht haben, zeigen. Bitte stellen Sie Ihre Frage klarer. Durch die Macht der engen Abstimmung schließe ich diese Frage! –

Antwort

2

Sie können das Listenverständnis verwenden.

print [i for i in student_list if i['marks'] > 0] 

Wie in den Kommentaren vorgeschlagen, auch

print [i for i in student_list if i.get('marks', 0)] 
+0

Vielleicht für Robustheit - 'i.get ('marks', 0)' –

1

Sie suchen nach etwas ein bisschen fortgeschritten wie verwenden:

print filter(lambda x: True if x['marks'] > 0 else False, student_list) 

Aber das ist wirklich nur ein Äquivalent die Listenkompromittierungen, die bereits vorgeschlagen wurden. Siehe this relevanten Abschnitt der Dokumentation.