Wenn Sie ein Motto möchten, können Sie einen Generator Ausdruck mit next()
verwenden könnten, die Kurzschlüsse, wenn Sie das erste Element gefunden haben, zu entfernen, und verwenden dann list.remove()
:
l.remove(next(d for d in l if d['name'] == value))
Beispiel:
>>> l = [{'name':'bob','age':12},{'name':'jill','age':34}]
>>> value = 'bob'
>>> l.remove(next(d for d in l if d['name'] == value))
>>> l
[{'name': 'jill', 'age': 34}]
Hinweis: das wird ein erhöhen StopIteration
ist die value
nicht gefunden wird, die vermieden werden kann, aber es ist etwas länger, denn obwohl next()
ein Standardargument hat, list.remove()
nicht:
>>> l = [{'name':'bob','age':12},{'name':'jill','age':34}]
>>> value = 'bob'
>>> value_to_remove = next((d for d in l if d['name'] == value), None)
>>> 'Value not in list' if value_to_remove is None else l.remove(value_to_remove)
>>> l
[{'name': 'jill', 'age': 34}]
>>> value_to_remove = next((d for d in l if d['name'] == value), None)
>>> 'Value not in list' if value_to_remove is None else l.remove(value_to_remove)
'Value not in list'
Ihr Beispiel löscht nur die 'name' Schlüssel, nicht das gesamte Wörterbuch. – Jkdc
Mögliches Duplikat von [Wie entferne ich einen Schlüssel aus einem Python-Wörterbuch?] (Http://stackoverflow.com/questions/11277432/how-to-remove-a-key-from-a-python-dictionary) – MYGz
Es ist ein schlechte Praxis zu überschreiben Standard 'list' – Kh40tiK