Mam ciąg i słownik, muszę zastąpić każde wystąpienie klucza dyktującego w tym tekście.Zastępowanie słownika Python spacją w kluczu
text = 'I have a smartphone and a Smart TV'
dict = {
'smartphone': 'toy',
'smart tv': 'junk'
}
Jeśli nie ma miejsca na klucze, złamię tekst w słowie i porównać jeden po drugim z dict. Wygląda na to, że zajęło to O (n). Ale teraz klucz ma w sobie przestrzeń, więc rzecz jest bardziej złożona. Proszę zasugerować mi dobry sposób na zrobienie tego i proszę zauważyć, że klucz może nie pasować do przypadku z tekstem.
Aktualizacja
mam myśleć o tym rozwiązaniem, ale nie jest wydajny. O (m * n) lub więcej ...
for k,v in dict.iteritems():
text = text.replace(k,v) #or regex...
Klucz ma miejsce, więc nie można podzielić –
zamiana ciągów nie powiedzie się, jeśli dict ma coś takiego: my_dict = {"google": "yahoo", "yahoo": "google"} i tekst "google jest większy niż yahoo" –