[英]How to create a dictionary with nested dictionary with multiple key value pairs using a loop?
[英]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.