Index umdrehen
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']}