Massensaite in Python ersetzen?

Angenommen, ich habe eine Zeichenfolge, die folgendermaßen aussieht:

str = "The &yquick &cbrown &bfox &Yjumps over the &ulazy dog"

Sie werden viele Stellen in der Zeichenfolge bemerken, an denen ein kaufmännisches Und steht, gefolgt von einem Zeichen (wie "& y" und "& c"). Ich muss diese Zeichen durch einen entsprechenden Wert ersetzen, den ich in einem Wörterbuch habe.

dict = {"&y":"\033[0;30m",
        "&c":"\033[0;31m",
        "&b":"\033[0;32m",
        "&Y":"\033[0;33m",
        "&u":"\033[0;34m"}

Wie geht das am schnellsten? Ich könnte manuell alle kaufmännischen Und-Zeichen finden und dann das Wörterbuch durchlaufen, um sie zu ändern, aber das scheint langsam zu sein. Eine Reihe von Regex-Ersetzungen zu machen, scheint ebenfalls langsam zu sein (ich werde ein Wörterbuch mit etwa 30-40 Paaren in meinem aktuellen Code haben).

Anregungen sind dankbar, danke.

Bearbeiten:

Wie in den Kommentaren zu dieser Frage erwähnt, wird mein Wörterbuch vor der Laufzeit definiert und wird sich im Laufe des Anwendungslebenszyklus nie ändern. Es ist eine Liste von ANSI-Escape-Sequenzen und enthält ungefähr 40 Elemente. Die durchschnittliche Länge der zu vergleichenden Zeichenfolge beträgt ungefähr 500 Zeichen, es gibt jedoch Zeichen mit bis zu 5000 Zeichen (obwohl dies selten vorkommt). Ich benutze derzeit auch Python 2.6.

Bearbeiten Sie # 2 Ich akzeptierte Tor Valamos Antwort als die richtige, da sie nicht nur eine gültige Lösung ergab (obwohl es nicht die warBeste Lösung), aber alle anderen berücksichtigt und hat eine enorme Menge an Arbeit, um sie alle zu vergleichen. Diese Antwort ist eine der besten und hilfreichsten Antworten, die ich je auf StackOverflow erhalten habe. Hut ab.

Antworten auf die Frage(13)

Ihre Antwort auf die Frage