Python 3.x 如何在现有字典中添加新键,并在python中从中派生嵌套字典?
Iam正在尝试在现有字典中添加新键以创建新的嵌套字典 下面是现有的词典 这就是我所尝试的: 但它不起作用 预期: 现在我需要添加新的键作为“otherDetails”,以派生一个嵌套字典,如下所示Python 3.x 如何在现有字典中添加新键,并在python中从中派生嵌套字典?,python-3.x,dictionary,Python 3.x,Dictionary,Iam正在尝试在现有字典中添加新键以创建新的嵌套字典 下面是现有的词典 这就是我所尝试的: 但它不起作用 预期: 现在我需要添加新的键作为“otherDetails”,以派生一个嵌套字典,如下所示 {'userId': 'thanks', 'jobTitleName': 'Program Directory', 'firstName': 'Tom', 'lastName': 'Hanks', 'preferredFullName': 'Tom Hanks', 'employeeCod
{'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'
}
}
如果有人能给出正确的解决方案,我们将不胜感激?
谢谢筛选出要保留的密钥,然后筛选出要移动到内部目录的密钥,然后插入内部目录
from pprint import pprint
d = {
"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",
}
# Outer keys you want to keep
keys_to_keep = {'userId','jobTitleName','firstName','lastName','preferredFullName', 'employeeCode'}
# Keys you want to move into inner dict
keys_to_move = {'Full Name','phoneNumber','region','emailAddress'}
# Create dict to insert into
new_dict = {k: d[k] for k in keys_to_keep}
# Create dict to insert into above dict
insert_dict = {k: d[k] for k in keys_to_move}
# Insert inner dict
new_dict['otherDetails'] = insert_dict
pprint(new_dict)
输出:
{'employeeCode': 'E3',
'firstName': 'Tom',
'jobTitleName': 'Program Directory',
'lastName': 'Hanks',
'userId': 'thanks',
'preferredFullName': 'Tom Hanks',
'otherDetails': {'Full Name': 'TomHanks',
'emailAddress': 'tomhanks@gmail.com',
'phoneNumber': '+00408-2222222',
'region': 'CA'},
}
代码中有几个问题。首先,在
jsonValue
中,将dict放入dict中,但不要在此处指定键。从上下文来看,我假设您实际上想要在这里使用一个数组(因为您很可能有一个员工数据数组,如果我在这里说错了,只需注释即可)
然后您尝试分配给
empDetails['otherDetails'][k2]
但是,您从未在empDetails['otherDetails']
中初始化dict。因此,您实际上尝试分配给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)
嗨@Isma我用我试过的代码更新了问题。。
{'employeeCode': 'E3',
'firstName': 'Tom',
'jobTitleName': 'Program Directory',
'lastName': 'Hanks',
'userId': 'thanks',
'preferredFullName': 'Tom Hanks',
'otherDetails': {'Full Name': 'TomHanks',
'emailAddress': 'tomhanks@gmail.com',
'phoneNumber': '+00408-2222222',
'region': 'CA'},
}
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)