簡體   English   中英

如何使用 python 創建一個 json 文件,該文件將包含一個鍵並在該多個鍵值對下使用 for 循環

[英]How can I create a json file using python which will contain one key and under that multiple key value pairs using a for loop

我希望我的 Json 文件看起來像這樣 - 我從另一個 Json 文件中獲取的名稱值。

{"Name1":{
    "Age": 30,
    "Gender": "Male",
},
"Name2":{
    "Age": 25,
    "Gender": "Female",
}}

我現在的腳本是這樣的:

在這里,我從另一個 Json 文件中獲取名稱值。

for k in data['person']:
    Name = k['name']
    dictionary =  {Name:{
        "Age": 25,
        "Gender": 'Female'
    }}
json_file = json.dumps(dictionary,indent = 4)

但我得到 output 就像 -

{
    "Name1": {
        "Age": 35,
        "Gender": "Male"
    }
}{
    "Name2": {
        "Age": 30,
        "Gender": "Female"
    }
}

以此類推。

請幫忙解決這個問題。 提前致謝。

我猜你的代碼中有一個縮進錯誤,你實際上是在循環中轉儲dictionary 因此,您的 output 的格式錯誤(對於這兩個元素, Age也應該是 25 歲, Gender應該是女性,因為它們在您的循環中是硬編碼的)。

您應該首先創建一個空字典,您將在每個步驟中用dictionary更新它:

out_dict = {}
for k in data['person']:
    Name = k['name']
    dictionary =  {Name:{
        "Age": 25,
        "Gender": 'Female'
    }}
    out_dict.update(dictionary)

json_file = json.dumps(out_dict,indent = 4)

Output:

{
    "Name1": {
        "Age": 25,
        "Gender": "Female"
    },
    "Name2": {
        "Age": 25,
        "Gender": "Female"
    }
}

順便說一句json_file是一個字符串而不是一個文件。

您可以嘗試這些選項來創建嵌套字典

import random 
import json
# Option 1
dummy_data = {'person': { f"Name{num}":{"Age": random.randint(9, 50) ,"Gender": random.choice(['Female', 'Male']) } for num in range(3)} } 
json_file = json.dumps(dummy_data, indent = 4)
json_file

# Option 2 
data_ditc = {
  "Name0": {
    "Age": 10,
    "Gender": "Male"
  },
  "Name1": {
    "Age": 29,
    "Gender": "Male"
  },
  "Name2": {
    "Age": 15,
    "Gender": "Male"
  }
}

data_person = {'person': {} } # = {'person': dict()}
for k, v in data_ditc.items():
  data_person['person'].update({k:v})

json_file2 = json.dumps(data_person, indent = 4)

# Option 3 

data_person2 = dict()
for item in data_ditc.items():
  data_person2.setdefault('person', {}).update(dict([item]))

json_file3 = json.dumps(data_person2, indent = 4)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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