[英]How to add multiple values to a multilevel dictionary in python
我試過這個,但我放棄了。 我不明白為什么這總是讓我失望。 我要填寫以下字典模板
testfile = {'locations':
{'location_name1":
{'document_title1': 'title_value1',
'page_nr1': 'text_value1'}
}}
我有以下代碼嘗試向其中插入多個值。 這代表了我目前正在使用的代碼。
testfile = {}
locatie = 0
while location != 5:
page_nr = 0
while page_nr != 3:
testfile = testfile + {'location':{'location_naam' + str(location):
{'page_nr' + str(page_nr):'text_value'+ str(pagina_nr)}}}
page_nr += 1
location += 1
這會導致代碼在每個循環中覆蓋測試文件。 但是我想添加值並基本上得到3個location_name,每個location_name具有5個document_titles / page_nrs。
我該如何實現?
編輯
所需的輸出將是
{'location':
{'location_naam0': {
'page_nr0': 'text_value0',
'page_nr1': 'text_value1',
'page_nr1': 'text_value1'}},
{'location_naam1': {
'page_nr0': 'text_value0',
'page_nr1': 'text_value1',
'page_nr1': 'text_value1'}},
{'location_naam2': {
'page_nr0': 'text_value0',
'page_nr1': 'text_value1',
'page_nr1': 'text_value1'}},
{'location_naam3': {
'page_nr0': 'text_value0',
'page_nr1': 'text_value1',
'page_nr1': 'text_value1'}},
{'location_naam4': {
'page_nr0': 'text_value0',
'page_nr1': 'text_value1',
'page_nr1': 'text_value1'}}
}
在這里,我像列出所有字典一樣解決了問題:
testfile = []
location = 0
while location != 5:
page_nr = 0
while page_nr != 3:
testfile.append( {'location':{'location_naam' +str(location):
{'page_nr' +str(page_nr):'text_value'+str(pagina_nr)}}})
page_nr += 1
location += 1
print(testfile)
O / P像:
[{'location': {'location_naam0': {'page_nr0': 'text_value0'}}},
{'location': {'location_naam0': {'page_nr1': 'text_value1'}}},
{'location': {'location_naam0': {'page_nr2': 'text_value2'}}},
{'location': {'location_naam1': {'page_nr0': 'text_value0'}}},
{'location': {'location_naam1': {'page_nr1': 'text_value1'}}},
{'location': {'location_naam1': {'page_nr2': 'text_value2'}}},
{'location': {'location_naam2': {'page_nr0': 'text_value0'}}},
{'location': {'location_naam2': {'page_nr1': 'text_value1'}}},
{'location': {'location_naam2': {'page_nr2': 'text_value2'}}},
{'location': {'location_naam3': {'page_nr0': 'text_value0'}}},
{'location': {'location_naam3': {'page_nr1': 'text_value1'}}},
{'location': {'location_naam3': {'page_nr2': 'text_value2'}}},
{'location': {'location_naam4': {'page_nr0': 'text_value0'}}},
{'location': {'location_naam4': {'page_nr1': 'text_value1'}}},
{'location': {'location_naam4': {'page_nr2': 'text_value2'}}}]
這是你想要的嗎?
print({
'location': {
"location_naam{}".format(i): {
"page_nr{}".format(k): "text_value{}".format(k)
for k in range(2)
}
for i in range(4)
}
})
out:
{
"location": {
"location_naam0": {
"page_nr0": "text_value0",
"page_nr1": "text_value1"
},
"location_naam1": {
"page_nr0": "text_value0",
"page_nr1": "text_value1"
},
"location_naam2": {
"page_nr0": "text_value0",
"page_nr1": "text_value1"
},
"location_naam3": {
"page_nr0": "text_value0",
"page_nr1": "text_value1"
}
}
}
我使用這段代碼解決了這個問題。 我基本上在字典中添加了列表,以使所有內容正常工作。
while x != 4: # documentniveau
results[0]['locaties'].append({'locatie' + str(x): []})
y = 0
while y != 2: # paginaniveau
results[0]['locaties'][x]['locatie'+str(x)].append({'pagenr': y})
y += 1
x += 1
輸出:
[
{
"locaties": [
{
"locatie0": [
{
"pagenr": 0
},
{
"pagenr": 1
}
]
},
{
"locatie1": [
{
"pagenr": 0
},
{
"pagenr": 1
}
]
},
{
"locatie2": [
{
"pagenr": 0
},
{
"pagenr": 1
}
]
},
{
"locatie3": [
{
"pagenr": 0
},
{
"pagenr": 1
}
]
}
]
}
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.