Pregunta

En mi aplicación Estoy conectando a un servidor que devuelve alguna cadena Unicode estilo JSON se asemeja diccionario de diccionarios. Como resultado, me gustaría conseguir un diccionario nivelado con id como una clave y un valor Unicode como esto:

{'1': u'autos','3': u'cities'}

Así que me carga la respuesta con construido en el módulo json:

>>> jsonData = json.loads(data)
>>> jsonData
{u'1': {u'id': u'1', u'name': u'autos'}, u'3': {u'id': u'3', u'name': u'cities'}, u'2': {u'id': u'2', u'name': u'business'},}
>>> type(jsonData)
<type 'dict'>

Se puede ver el objeto devuelto aquí. Entonces debería descomponerlo para deshacerse del diccionario padres. Y, por último codificar los identificadores. He encontrado dos métodos de cómo hacer la codificación. Uno:

>>> import unicodedata
>>> unicodedata.normalize('NFKD', data).encode('ascii','ignore')

y segundo:

>>> data.encode('ascii','ignore')

¿Cómo debo realizar esta tarea, especialmente la descomposición?

¿Fue útil?

Solución

Esto debería funcionar:

outputdata = {}
for id, stuff in jsonData.iteritems():
    outputdata[id.encode("ascii")] = stuff[u"name"]

También podría utilizar un generador de expresión, como en respuesta dugres'.

Otros consejos

decomp=dict((v['id'], v['name']) for v in jsondata.values())
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top