Pythonischer Weg, verschachtelte Wörterbücher umzukehren

8

Ich habe ein verschachteltes Wörterbuch von Personen und Item-Bewertungen, mit Leuten als Schlüssel. Menschen können oder dürfen sich nicht teilen. Beispiel:

%Vor%

Ich suche nach der einfachsten Möglichkeit, diese Beziehungen umzukehren, und habe ein neues verschachteltes Wörterbuch mit Elementen als Schlüssel. Beispiel:

%Vor%

Was ist der beste Weg, dies zu tun? Ist es möglich mit einem Verständnis?

    
GSto 16.02.2010, 14:49
quelle

5 Antworten

17

collections.defaultdict macht das ziemlich einfach:

%Vor%

Ausgabe:

%Vor%     
Ryan Ginstrom 16.02.2010, 14:56
quelle
3

Ich stimme völlig zu, dass Ryan Ginstroms Antwort der bevorzugte Weg ist, dies zu tun (für alle praktischen Zwecke).

Aber da die Frage auch explizit nachfragt:

Ist es möglich mit einem Verständnis?

Ich dachte, ich würde mit einem kurzen Beispiel darüber nachdenken, wie man das mit einem Listenverständnis macht (es könnte ein gutes Beispiel dafür sein, wie verschachtelte Listenkompressen die Lesbarkeit schnell verschlechtern können).

%Vor%     
ChristopheD 16.02.2010 20:19
quelle
1

Dies ist leicht zu tun (wie andere gezeigt haben), aber abhängig von Ihren Bedürfnissen sollten Sie auch berücksichtigen, dass für Daten mit mehreren Informationen, die Sie nach beliebigen Kriterien extrahieren möchten, eine Datenbank das beste Werkzeug sein könnte. Das integrierte Modul sqlite3 bietet eine Datenbank mit geringem Overhead, die je nach dem, was Sie tun, besser als ein verschachteltes Dict funktioniert.

    
Mike Graham 16.02.2010 17:52
quelle
0

Pandas können eine andere Option bieten. Angenommen, data ist das Eingabewörterbuch.

%Vor%     
Da Qi 24.12.2016 00:29
quelle
0

Wenn Sie nur auf umgekehrt verschachtelte Wörterbücher zugreifen möchten, Sparen Sie Speicherplatz, wenn das Wörterbuch zu groß ist, um es umzukehren.

%Vor%     
Arkind 07.11.2017 06:06
quelle

Tags und Links