Python: Converter dicionário complexo de seqüências de caracteres de Unicode para ASCII [duplicado]

Duplicata Possível:
Como obter objetos string em vez Unicode de JSON em Python?

Eu tenho muita entrada como dicionários de vários níveis analisados ​​a partir de chamadas da API JSON. As cordas estão todas em unicode, o que significa que há muitasu'stuff like this'. estou usandojq para brincar com os resultados e precisa converter esses resultados para ASCII.

Eu sei que posso escrever uma função para apenas convertê-lo assim:

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

Isso está correto? Não tenho certeza. Não é isso que eu quero perguntar a você.

O que estou perguntando é que essa é uma solução típica de força bruta para o problema. Deve haver um caminho melhor. Uma maneira mais pythonic. Não sou especialista em algoritmos, mas este também não parece particularmente rápido.

Então, há uma maneira melhor? Ou se não, essa função pode ser melhorada ...?

Edição pós-resposta

Mark Amery resposta está correto, mas eu gostaria de postar uma versão modificada dele. Sua função funciona no Python 2.7+ e estou no 2.6, então tive que convertê-lo:

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