Ich versuche, Elemente aus einem Wörterbuch zu löschen, wenn der Wert des Schlüssels unter einem bestimmten Schwellenwert liegt. Für ein einfaches Beispiel zu dem, was ich meine:Löschen von Elementen aus einem Wörterbuch mit einer for-Schleife
my_dict = {'blue': 1, 'red': 2, 'yellow': 3, 'green': 4}
for color in my_dict:
threshold_value = 3
if my_dict[color] < threshold_value:
del my_dict[color]
print(my_dict)
Nun bekomme ich einen RuntimeError: dictionary changed size during iteration
Fehler. Keine großen Überraschungen dort. Der Grund, warum ich diese Frage bin Entsendung ist:
Finde heraus, ob es eine elegante Lösung ist, die nicht erfordert ein neues Wörterbuch zu schaffen (das gilt nur die Schlüssel mit Werten> = Schwelle).
Versuchen Sie, Pythons Begründung hier zu verstehen. Die Art, wie ich es mir vorlese ist: "gehe zum ersten Schlüssel. Ist der Wert dieses Schlüssels < x? Wenn ja - ziehe diesen Schlüssel: value item und fahre mit der nächsten Taste im Wörterbuch fort, wenn nein - fahre fort nächster Schlüssel ohne etwas zu tun ". Mit anderen Worten, was historisch mit früheren Schlüsseln geschah, sollte nicht beeinflussen, wohin ich als nächstes gehe. Ich freue mich auf die nächsten Punkte, unabhängig von der Vergangenheit. Ich weiß, es ist lustig (manche sagen vielleicht blöd, das gebe ich dir), aber was ist Pythons "Art zu denken" über diese Schleife? Warum funktioniert es nicht? Wie würde Python es sich selbst vorlesen? Ich versuche nur, ein besseres Verständnis für die Sprache zu bekommen ...
wie ich im OP gesagt habe, will ich kein neues Diktat erstellen. – Optimesh
Sie haben nach einem eleganten Weg gefragt. Aber Sie können programmieren, was Sie wollen. – Daniel