Index umdrehen#

Allgemeines Problem in Text Mining:

Hier eine exemplrische minimalistische Lösung, wie man solch einen invertrierten Index erstellt.

Unser Sandkastenproblem: Wir haben einen Index, welche Zahl (2,3,4,5 etc.) in welchem Dokument (“zwei”, “drei”, “fünf”) vorkommt.

  • Gegeben: Ein Dict der Zweier-, Dreier-, Fünferzahlen.

  • Gesucht: Ist eine gegebene Zahl eine Zweier-, Dreier-, Fünferzahl?

index_1 = {"zwei": [2,4,6,8,10,12,14,16,18,20],
           "vier": [4,8,12,16,20],
           "drei": [3,6,9,12,15,18],
           "fünf": [5,10,15,20] }

Index umdrehen: Eine Doppelschleife.

index_2 = {} # leeres Dict

for key, val in index_1.items():
    for v in val:
        if v not in index_2:
            # v als Schlüssel neu anlegen, Liste initialieren
            index_2[v] = [key]
        else:
            # zur existierenden Liste hinzufügen
            index_2[v].append(key)
index_2
{2: ['zwei'],
 4: ['zwei', 'vier'],
 6: ['zwei', 'drei'],
 8: ['zwei', 'vier'],
 10: ['zwei', 'fünf'],
 12: ['zwei', 'vier', 'drei'],
 14: ['zwei'],
 16: ['zwei', 'vier'],
 18: ['zwei', 'drei'],
 20: ['zwei', 'vier', 'fünf'],
 3: ['drei'],
 9: ['drei'],
 15: ['drei', 'fünf'],
 5: ['fünf']}