Python: Konwertuj złożony słownik ciągów znaków z Unicode na ASCII [duplikat]

Możliwy duplikat:
Jak uzyskać obiekty string zamiast Unicode z JSON w Pythonie?

Mam dużo danych wejściowych jako słowniki wielopoziomowe analizowane z wywołań API JSON. Wszystkie ciągi są w Unicode, co oznacza, że ​​jest ich dużou'stuff like this'. ja używamjq bawić się wynikami i konwertować te wyniki na ASCII.

Wiem, że mogę napisać funkcję, która po prostu przekonwertuje to tak:

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

Czy to prawda? Niepewny. Ale nie o to chcę cię zapytać.

Pytam, to typowe rozwiązanie problemu brute-force. Musi być lepszy sposób. Bardziej pytoniczny sposób. Nie jestem ekspertem od algorytmów, ale ten też nie wygląda szczególnie szybko.

Czy jest lepszy sposób? A jeśli nie, czy można poprawić tę funkcję ...?

Edycja po odpowiedzi

Odpowiedź Marka Ameryka jest poprawne, ale chciałbym zamieścić zmodyfikowaną wersję tego pliku. Jego funkcja działa na Pythonie 2.7+, a ja na 2.6, więc musiałem go przekonwertować:

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

questionAnswers(1)

yourAnswerToTheQuestion