Descomposición y decodificación de anidada diccionario / json
-
28-09-2019 - |
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?
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())