2010-03-18 22 views
6

Quiero crear un diccionario de Python que contiene los valores de una multidimensional aceptar y que debería ser capaz de expandirse, esta es la estructura que los valores deben ser almacenados: -Python | Cómo crear diccionarios dinámicos y ampliables

userdata = {'data':[{'username':'Ronny Leech','age':'22','country':'Siberia'},{'username':'Cronulla James','age':'34','country':'USA'}]} 

Digamos que quiero agregar otro usuario

def user_list(): 
    users = [] 
    for i in xrange(5, 0, -1): 
     lonlatuser.append(('username','%s %s' % firstn, lastn)) 
     lonlatuser.append(('age',age)) 
     lonlatuser.append(('country',country)) 
    return dict(user) 

esto sólo devuelve un diccionario con un único valor en el mismo (ya que los nombres clave son los mismos valores serán sobrescritos) .Así, ¿cómo añado un conjunto de valores a esta diccionario.

Nota: supongamos que se genera dinámicamente la edad, firstn, lastn y el país.

Gracias.

+0

lontatuser es la lista de datos de usuario con ¿llave de datos? ¿Y qué usuario pones en dict? – extraneon

Respuesta

11
userdata = { "data":[]} 

def fil_userdata(): 
    for i in xrange(0,5): 
    user = {} 
    user["name"]=... 
    user["age"]=... 
    user["country"]=... 
    add_user(user) 

def add_user(user): 
    userdata["data"].append(user) 

o más corto:

def gen_user(): 
    return {"name":"foo", "age":22} 

userdata = {"data": [gen_user() for i in xrange(0,5)]} 

# or fill separated from declaration so you can fill later 
userdata ={"data":None} # None: not initialized 
userdata["data"]=[gen_user() for i in xrange(0,5)] 
+0

Lo usé en una sola función, apilado como una sola unidad para luego poder volver a usarlo. Gracias. – Switch

1

¿Cuál es el propósito de la data dict exterior?

Una posibilidad es no utilizar username como clave, sino el nombre de usuario.

Parece que está intentando usar dicts como base de datos, pero no estoy seguro de que sea una buena opción.

0

Usted podría intentar esto Python 3+

key_ref = 'More Nested Things' 
my_dict = {'Nested Things': 
       [{'name', 'thing one'}, {'name', 'thing two'}]} 

my_list_of_things = [{'name', 'thing three'}, {'name', 'thing four'}] 

try: 
    # Try and add to the dictionary by key ref 
    my_dict[key_ref].append(my_list_of_things) 

except KeyError: 
    # Append new index to currently existing items 
    my_dict = {**my_dict, **{key_ref: my_list_of_things}} 

print(my_dict) 

output: 
{ 
    'More Nested Things': [{'name', 'thing three'}, {'name', 'thing four'}], 
    'Nested Things': [{'thing one', 'name'}, {'name', 'thing two'}] 
} 

Se podía rap esto en su definición en y hacerlo más fácil de usar, escribiendo intento de captura que es bastante tedioso

Cuestiones relacionadas