2010-03-18 42 views
6

Tôi muốn tạo ra một từ điển Python mà giữ giá trị trong một đa chiều chấp nhận và nó sẽ có thể mở rộng, đây là cấu trúc mà các giá trị nên được lưu trữ: -Python | Làm thế nào để tạo ra năng động và có thể mở rộng từ điển

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

cho phép nói rằng tôi muốn thêm một người dùng khác

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) 

này sẽ chỉ trả về một cuốn từ điển với một giá trị duy nhất trong đó (kể từ khi tên chính là cùng một giá trị này sẽ ghi đè) vì vậy, làm thế nào để thêm một tập hợp các giá trị này từ điển.

Lưu ý: giả định tuổi, lần đầu tiên, cuối cùng và quốc gia được tạo động.

Cảm ơn.

+0

lontatuser là danh sách trong userdata với dữ liệu quan trọng? Và người dùng bạn đưa vào dict là gì? – extraneon

Trả lời

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) 

hoặc ngắn hơn:

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

Tôi đã sử dụng nó trong một hàm duy nhất, được xếp chồng lên nhau thành một đơn vị duy nhất để sau đó tôi có thể sử dụng lại nó. Cảm ơn. – Switch

1

mục đích của bên ngoài data dict là gì?

Một khả năng là không sử dụng username làm khóa, mà đúng hơn là tên người dùng.

Dường như bạn đang cố gắng sử dụng dicts làm cơ sở dữ liệu, nhưng tôi không chắc nó có phù hợp hay không.

0

Bạn có thể thử này 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'}] 
} 

Bạn có thể rap này trong thư mục vào định nghĩa và làm cho nó dùng thân thiện hơn, gõ cố gắng nắm bắt nó khá tẻ nhạt

Các vấn đề liên quan