我有这个列表,我希望存储一个名称,并在名称中添加更多具有名称和数量的项目列表,您可以在下面看到粗略的大纲。
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”的项目列表中添加一个项目?
答案 0 :(得分: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}}}