2675 Stimmen

Prüfen, ob ein bestimmter Schlüssel bereits in einem Wörterbuch existiert

Ich wollte testen, ob ein Schlüssel in einem Wörterbuch vorhanden ist, bevor ich den Wert für den Schlüssel aktualisiere. Ich habe den folgenden Code geschrieben:

if 'key1' in dict.keys():
  print "blah"
else:
  print "boo"

Ich denke, dass dies nicht der beste Weg ist, um diese Aufgabe zu bewältigen. Gibt es eine bessere Möglichkeit, nach einem Schlüssel im Wörterbuch zu suchen?

31 Stimmen

Aufruf von dict.keys() erstellt eine Liste von Schlüsseln, entsprechend der Dokumentation docs.python.org/2/library/stdtypes.html#dict.keys aber es würde mich überraschen, wenn dieses Muster in einer seriösen Implementierung nicht so optimiert wäre, dass es sich in if 'key1' in dict: .

7 Stimmen

So habe ich endlich herausgefunden, warum viele meiner Python-Skripte so langsam waren :) :(. Das liegt daran, dass ich seit Jahren x in dict.keys() um nach Schlüsseln zu suchen. Und das geschah, weil die übliche Art, in Java über Schlüssel zu iterieren, ist for (Type k : dict.keySet()) diese Gewohnheit verursacht for k in dict.keys() sich natürlicher anfühlen als for k in dict (was in Bezug auf die Leistung immer noch in Ordnung sein sollte?), aber dann wird die Überprüfung der Schlüssel zu if k in dict.keys() auch, was ein Problem ist...

4 Stimmen

@EvgeniSergeev if k in dict_: prüft auf das Vorhandensein von k in den KEYS von dict_, so dass Sie immer noch nicht brauchen dict_.keys() . (Das hat mich gestört, denn es liest sich für mich wie ein Test für ein Wert in dict. Ist es aber nicht.)

5voto

Abdulkalek Punkte 57

Sie können eine for Schleife, um das Wörterbuch zu durchlaufen und den Namen des Schlüssels zu erhalten, den Sie im Wörterbuch finden möchten. Danach prüfen Sie, ob er existiert oder nicht, indem Sie if Zustand:

dic = {'first' : 12, 'second' : 123}
for each in dic:
    if each == 'second':
        print('the key exists and the corresponding value can be updated in the dictionary')

1 Stimmen

Überprüfen Sie den Code, denn die Ausgabe hierfür lautet it is exist y not exist

2 Stimmen

Wozu überhaupt ein Wörterbuch verwenden, wenn es um eine lineare Suche geht?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X