簡體   English   中英

如何在python中將多個值添加到多級字典

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM