python-3.x - 如何在现有字典中添加新键并在 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'
}
}
欣赏是否有人可以提供正确的解决方案?谢谢
解决方案
您的代码中有几个问题。首先,在您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)
推荐阅读
- python - 如何在所有列中获取第一个非零条目并为数据帧逐行求和?
- python - 计算和更改被 1 包围的矩阵中的 0 - Python
- swift - Swift 5(PhysicsBody:无法创建物理体)
- uml - 如何在 UML 中建模协变关联类?
- ios - 错误:无法分配 UIImage 类型的值?到数据?
- tomcat - Grails 有时会呈现错误的字符编码
- elasticsearch - 有没有办法将弹性搜索字段类型从小写转换为标题大小写?
- visual-studio - 如何在 Visual Studio 2019 Windows Forms 项目中创建多个表单?
- reactjs - React Hook useEffect 缺少依赖项:'classes'(Material-ui 样式和 react-bootstrap-sweetalert)
- database - 如何在 VB.NET 中将记录保存到主从表中?