Python: Komplexes Wörterbuch von Zeichenfolgen von Unicode nach ASCII konvertieren [duplizieren]

Mögliche Duplikate:
Wie erhält man in Python String-Objekte statt Unicode-Objekte von JSON?

Ich habe viel Input als mehrstufige Wörterbücher, die von JSON-API-Aufrufen analysiert wurden. Die Strings sind alle in Unicode, was bedeutet, dass es sehr viele gibtu'stuff like this'. ich benutzejq um mit den Ergebnissen herumzuspielen und diese Ergebnisse in ASCII umzuwandeln.

Ich weiß, dass ich eine Funktion schreiben kann, um sie einfach so zu konvertieren:

def convert(input):
    if isinstance(input, dict):
        ret = {}
        for stuff in input:
            ret = convert(stuff)
    elif isinstance(input, list):
        ret = []
        for i in range(len(input))
            ret = convert(input[i])
    elif isinstance(input, str):
        ret = input.encode('ascii')
    elif :
        ret = input
    return ret

Ist das überhaupt richtig? Nicht sicher. Das ist es aber nicht, was ich dich fragen möchte.

Was ich frage ist, das ist eine typische Brute-Force-Lösung für das Problem. Es muss einen besseren Weg geben. Eine pythonischere Art. Ich bin kein Experte für Algorithmen, aber dieser sieht auch nicht besonders schnell aus.

Gibt es einen besseren Weg? Oder wenn nicht, kann diese Funktion verbessert werden ...?

Bearbeitung nach der Beantwortung

Mark Amerys Antwort ist richtig, aber ich möchte eine geänderte Version davon posten. Seine Funktion läuft auf Python 2.7+ und ich bin auf 2.6, also musste ich es konvertieren:

def convert(input):
    if isinstance(input, dict):
        return dict((convert(key), convert(value)) for key, value in input.iteritems())
    elif isinstance(input, list):
        return [convert(element) for element in input]
    elif isinstance(input, unicode):
        return input.encode('utf-8')
    else:
        return input

Antworten auf die Frage(1)

Ihre Antwort auf die Frage