Sicheres Einfügen in ein Dictionary

Hier ist ein Stück Code über das ich mal gestolpert bin. Ich habe das tatsächlich schon desöfteren genau so gebraucht. Bislang kannte ich die setdefault() Funktion noch nicht.

dict_of_duplicates_docs = {}

for doc in documents: # documents sind dictionaries mit einer Datenbank _id
    hashval = get_hashval(doc) # gibt einen hash für dieses Dokument zurück
                               # der identisch ist, wenn es sich um das 
                               # gleiche Dokument handelt 
                               # (unabhängig von der DB _id)
    _id = doc["_id"]    
    dict_of_duplicate_docs.setdefault(hashval, []).append(_id)

Wenn hashval noch nicht im Dictionary vorhanden ist, setzt setvalue diesen key und speichert die leere Liste als value. Es gibt dann den value für den key aus hashval zurück.

In diesen Rückgabewert, die (leere) Liste der ids, fügen wir dann gleich die neue _id ein.

Man muss also nicht erst im Dict nachschlagen, ob der Key schon existiert und manuell die leere Liste setzen, nur um sicher zu sein, dass es keinen KeyError beim Schreiben der _id gibt.

Am Ende finden wir also die Duplikate, wenn in der Liste mehr als eine _id eingetragen wurde:

{ 
  "hashA": ["id_1", "id_3", "id_4"],
  "hashB": ["id_2"]
}

einfachpython source code auf github

Ich werde in Zukunft den source code und die Code-Beispiele, die ich in meinen Beiträgen auf einfachpython.de verwende, auf github bereit stellen. Damit können die Beispiele ausgechecked und auch gern korrigiert werden, wenn sich doch noch Fehler eingeschlichen haben.

Gern dürfen auch Alternativen aufgezeigt werden, die ich hier dann auch einbinden werde.

Zum github Repo geht es hier:

https://github.com/Sprungwunder/einfachpython

einfach python

Python möglichst einfach erklärt

Dieses wordpress Blog ist mein neuestes Projekt und befasst sich mit der Programmiersprache Python. Mit kleinen kurzen Beiträgen möchte ich die Sprache Neulingen in der Programmierung näher bringen, aber auch mal alten Programmierhasen oder Quereinsteigern ein paar A-ha Effekte entlocken.

Ausschließlich in deutscher Sprache

Das Blog ist bewusst in Deutsch gehalten. Natürlich ist die Sprache der Wahl in der Programmierung Englisch, aber ich denke, dass es gerade für Einsteiger beim Lesen von How-To’s und Tutorials in englischer Sprache oft Verständnisproblem gibt. Mir ging und geht es zum Teil manchmal immer noch so. Außerdem möchte ich das Netz nicht noch zusätzlich mit grammatikalisch nicht ganz flüssigem Englisch füllen, das haben andere schon zu oft erledigt.

Zu meinen Artikeln werde ich zusätzlich noch weiterführende Links angeben, in denen man sich dann noch tiefgreifender mit dem ein oder anderen Thema beschäftigen kann.

Ich hoffe, dass dieses Blog und die kommenden Artikel dem ein oder anderen weiterhelfen und freue mich immer über Kommentare, positive wie auch kritische. Zu lernen haben wir alle immer etwas…

Viel Spaß beim Lesen und Stöbern,

Christian