【问题标题】:python list tree indexingpython列表树索引
【发布时间】:2013-11-11 21:07:28
【问题描述】:

我有这个列表,我想在其中存储一个名称,并且在名称中包含更多带有名称和数量的项目列表,您可以在下面看到粗略的轮廓。

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
            }}}]

假设有“name1”到“name50”,如果你只知道“name34”而不是索引,我将如何在“name34”的项目列表中添加一个项目?

【问题讨论】:

标签: python json python-3.x indexing


【解决方案1】:

只需使用嵌套字典(即,松开列表部分):

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}}}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-05
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    相关资源
    最近更新 更多