2012-05-13 9 views
10
{'action_name':'mobile signup', 
    'functions':[{'name':'test_signUp', 
        'parameters':{'username':'[email protected]', 
           'password':'12345', 
           'mobileLater':'123454231', 
           'mobile':'1e2w1e2w', 
           'card':'1232313', 
           'cardLater':'1234321234321'}}], 
    'validations':[ 
      {'MOB_header':'My stores'}, 
      {'url':"/stores/my"}]} 

quiero conseguir todas las llaves & valores de este dict como una lista (de los valores que son dict o matriz)cómo obtener todas las claves y valores en dict anidado de list-of-dicts y dicts?

resultado de la impresión debe ser como este:

action name = mobile signup 
name = test_signUp 
username : [email protected] 
password : 12345 
mobileLater: 123454231 
mobile : 1e2w1e2w 
card : 1232313 
cardLater : 1234321234321 
MOB_header : My stores 
+0

Tal vez [esto] (http://stackoverflow.com/questions/1679384/converting-python-dictionary-to-list) ayude? – Hindol

+0

¿Y qué has intentado? Muéstranos un código. – Vikas

+0

Para una generalidad completa, debe usar 'else:' en lugar de 'elif isinstance (value, str):'. – huon

Respuesta

8

Usted Es posible que desee utilizar una función recursiva para extraer todos los pares key, value.

def extract(dict_in, dict_out): 
    for key, value in dict_in.iteritems(): 
     if isinstance(value, dict): # If value itself is dictionary 
      extract(value, dict_out) 
     elif isinstance(value, unicode): 
      # Write to dict_out 
      dict_out[key] = value 
    return dict_out 

Algo de este tipo. Vengo del fondo de C++, así que tuve que buscar todas las sintaxis de google.

+0

Podría ser mejor reemplazar la línea 'elif isinstance (value, unicode):' with 'else:'. – SparkAndShine

+0

@sparkandshine IMHO explícito es mejor que implícito. La parte 'isinstance' también funciona como documentación. – Hindol

+0

No funciona realmente con listas (incluso en el ejemplo del autor), ¿verdad? Tiene que atravesar listas también. – antonavy

Cuestiones relacionadas