2010-03-18 11 views
6

Je veux créer un dictionnaire Python qui détient des valeurs dans un multidimensionnels accepter et il devrait être en mesure de se développer, c'est la structure que les valeurs doivent être conservées: -Python | Comment créer des dictionnaires dynamiques et extensibles

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

Disons que je veux ajouter un autre utilisateur

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) 

ce sera seulement un dictionnaire retourne avec une valeur unique (puisque les noms clés sont les mêmes valeurs seront écrasées) .Donc comment puis-je ajouter un ensemble de valeurs à ce dictionnaire.

Remarque: supposons que l'âge, firstn, lastn et le pays sont générés dynamiquement.

Merci.

+0

lontatuser est la liste userdata avec données clé? Et quel est l'utilisateur que vous mettez en dict? – extraneon

Répondre

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) 

ou moins:

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

Je l'ai utilisé dans une seule fonction, empilé comme une seule unité, alors je peux le réutiliser. Merci. – Switch

1

Quel est le but de la data externe dict?

Une possibilité est de ne pas utiliser username comme clé, mais plutôt le nom d'utilisateur lui-même.

Il semble que vous essayez d'utiliser dicts comme une base de données, mais je ne suis pas sûr que ce soit un bon ajustement.

0

Vous pouvez essayer cette 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'}] 
} 

Vous pouvez rap dans votre sur la définition et la rendre plus facile à utiliser, en tapant attraper l'essayer assez fastidieux

Questions connexes