Wörterbücher mit Listenwerten umkehren: Eine Lösung
In diesem Artikel untersuchen wir die Herausforderung der Umkehrung eines Wörterbuchs mit Listenwerten. Bei einem Indexwörterbuch, in dem Schlüssel Dateinamen und Werte Listen von Wörtern sind, die in diesen Dateien vorkommen, möchten wir ein invertiertes Wörterbuch erstellen, in dem Wörter Schlüssel und Werte Listen von Dateinamen sind.
Die bereitgestellte Inversionsfunktion invert_dict, ist nicht auf Wörterbücher mit Listenwerten als Schlüssel anwendbar, da es mit einem „TypeError: unhashable type: ‚list‘“ fehlschlägt. Diese Einschränkung ergibt sich aus der Tatsache, dass Schlüssel in Wörterbüchern hashbar sein müssen und Listen nicht hashbar sind.
Um diese Hürde zu überwinden, können wir einen benutzerdefinierten Ansatz verwenden, der das ursprüngliche Wörterbuch durchläuft und mit setdefault ein neues Wörterbuch erstellt . Konkret durchlaufen wir die Wertelisten jedes Schlüssels im ursprünglichen Wörterbuch und fügen die entsprechenden Schlüssel als Werte für diese Wörter im neuen invertierten Wörterbuch hinzu.
Hier ist eine Beispielimplementierung dieses Ansatzes:
inverse = {}
for k,v in index.items():
for x in v:
inverse.setdefault(x, []).append(k)
Diese Lösung verarbeitet Listenwerte im ursprünglichen Wörterbuch, indem sie die setdefault-Methode verwendet, um eine neue Liste zu erstellen, wenn der Schlüssel nicht im invertierten Wörterbuch vorhanden ist. oder an eine vorhandene Liste anhängen, wenn der Schlüssel bereits vorhanden ist.
Als Ergebnis erhalten wir ein invertiertes Wörterbuch, in dem Wörter Schlüssel und Werte Listen von Dateinamen sind.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3