首页 > 解决方案 > 如何在现有字典中添加新键并在 python 中从中派生嵌套字典?

问题描述

我正在尝试在现有字典中添加新键以创建新的嵌套字典

以下是现有字典

I need to make a nested dictionary from the below dictionary
{'userId': 'thanks',
 'jobTitleName': 'Program Directory', 
 'firstName': 'Tom', 'lastName': 'Hanks', 
 'preferredFullName': 'Tom Hanks',
 'employeeCode': 'E3',
 'region': 'CA', 
 'phoneNumber': '+00408-2222222', 
 'emailAddress': 'tomhanks@gmail.com', 
 'Full Name': 'TomHanks'}

这是我尝试过的:

key1=['userId','jobTitleName','firstName','lastName','employeeCode']
key2=['Full Name','phoneNumber','region','emailAddress']
jsonValue={
{'userId': 'thanks',
 'jobTitleName': 'Program Directory', 
 'firstName': 'Tom', 'lastName': 'Hanks', 
 'preferredFullName': 'Tom Hanks',
 'employeeCode': 'E3',
 'region': 'CA', 
 'phoneNumber': '+00408-2222222', 
 'emailAddress': 'tomhanks@gmail.com', 
 'Full Name': 'TomHanks'}
}
empDetails={}
for k in key1:
    empDetails[k]=jsonValue[k]
print("Key1", empDetails)
for k2 in key2:
    empDetails['otherDetails'][k2]=jsonValue[k2]

但它不工作

预期的:

现在我需要将新键添加为“ otherDetails ”以派生嵌套字典,如下所示

{'userId': 'thanks',
 'jobTitleName': 'Program Directory', 
 'firstName': 'Tom', 'lastName': 'Hanks', 
 'preferredFullName': 'Tom Hanks',
 'employeeCode': 'E3',
 otherDetails{
    'region': 'CA', 
    'phoneNumber': '+00408-2222222', 
    'emailAddress': 'tomhanks@gmail.com', 
    'Full Name': 'TomHanks'
 }
 }

欣赏是否有人可以提供正确的解决方案?谢谢

标签: python-3.xdictionary

解决方案


您的代码中有几个问题。首先,在您jsonValue的 dict 中放置一个 dict,但不要在此处指定一个键。从上下文来看,我假设您实际上想在这里使用一个数组(因为您很可能有一个员工数据数组,如果我在这里错了,请发表评论)
然后您尝试分配给empDetails['otherDetails'][k2]但是,您永远不会在empDetails['otherDetails']. 因此,您实际上尝试分配给None(因为empDetails['otherDetails'][k2]将评估为None[k2]

key1 = ['userId', 'jobTitleName', 'firstName', 'lastName', 'employeeCode']
key2 = ['Full Name', 'phoneNumber', 'region', 'emailAddress']
jsonValue = [{
    'userId': 'thanks',
    'jobTitleName': 'Program Directory',
    'firstName': 'Tom', 'lastName': 'Hanks',
    'preferredFullName': 'Tom Hanks',
    'employeeCode': 'E3',
    'region': 'CA',
    'phoneNumber': '+00408-2222222',
    'emailAddress': 'tomhanks@gmail.com',
    'Full Name': 'TomHanks'
}
]
for employee in jsonValue:
    empDetails = {'otherDetails': {}}
    for k in key1:
        empDetails[k] = employee[k]
    print("Key1", empDetails)
    for k2 in key2:
        empDetails['otherDetails'][k2] = employee[k2]
    print("Key1", empDetails)

推荐阅读