2013-10-31 124 views
0

我有这个列表,我想存储一个名称,并在名称内列出更多具有名称和数量的item列表,以及您可以看到下面的粗略轮廓。Python列表树索引

varx = [ 
    {"Name1": 
     { 
     "itemList": 
      { 
      "item1":100, 
      "item2":100, 
      "item3":100, 
      "item4":100, 
      "item5":100 
      }, 
     "otherStuff": 
      { 
      "stuff1":100, 
      "stuff2":100, 
      "stuff3":100, 
      } 
     }, 
    "Name2": 
     { 
     "itemList": 
      { 
      "item1":100, 
      "item2":100, 
      "item3":100, 
      "item4":100, 
      "item5":100 
      }, 
     "otherStuff": 
      { 
      "stuff1":100, 
      "stuff2":100, 
      "stuff3":100 
      }}}] 

假设有“名1”到“name50”,如何将添加“name34”的ITEMLIST内的项目,如果你知道这一切都是在“name34”,而不是它的指数?

+1

你需要它是一个列表?这是一个包含1个元素的列表。 – Hoopdady

+0

http://stackoverflow.com/questions/651794/whats-the-best-way-to-initialize-a-dict-of-dicts-in-python 检查出来。这是你在寻找我想的。 – virtuexru

回答

0

只需使用一个嵌套的字典(即松列表部分):

data={"Name34": 
     { 
     "itemList": 
      { 
      "item1":100, 
      "item2":100, 
      "item3":100, 
      "item4":100, 
      "item5":100 
      }, 
     "otherStuff": 
      { 
      "stuff1":100, 
      "stuff2":100, 
      "stuff3":100, 
      } 
     }, 
    "Name2": 
     { 
     "itemList":{'items' 
     }}} 

data['Name34']["itemList"]['item6']=100 

print(data['Name34']["itemList"]) 

打印:

{'item1': 100, 'item3': 100, 'item2': 100, 'item5': 100, 'item4': 100, 'item6': 100} 

如果你想在中间水平的autovivication,你可以做的东西沿着这些路线:

from collections import defaultdict 
data = defaultdict(lambda: defaultdict(dict)) 

data['Name34']['IntemList']['Item1']=10 
data['Name34']['IntemList']['Item6']=100 

print(data['Name34']['IntemList']) 

打印:

{'Item1': 10, 'Item6': 100} 

,您可以直接转成JSON:

from collections import defaultdict 
import json 

data = defaultdict(lambda: defaultdict(dict)) 

i=0 
for k1 in ['Name{}'.format(j) for j in range(1,6)]: 
    for k2 in ('Item1', 'Item2', 'Item33'): 
     data[k1]['ItemList'][k2]=i 
     i+=1 

print(json.dumps(data)) 

打印:

{"Name5": {"ItemList": {"Item33": 14, "Item2": 13, "Item1": 12}}, 
"Name4": {"ItemList": {"Item33": 11, "Item2": 10, "Item1": 9}}, 
"Name3": {"ItemList": {"Item33": 8, "Item2": 7, "Item1": 6}}, 
"Name2": {"ItemList": {"Item33": 5, "Item2": 4, "Item1": 3}}, 
"Name1": {"ItemList": {"Item33": 2, "Item2": 1, "Item1": 0}}}