Python 3.x 如何在现有字典中添加新键,并在python中从中派生嵌套字典?

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

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

下面是现有的词典 这就是我所尝试的: 但它不起作用

预期: 现在我需要添加新的键作为“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'
 }
 }
如果有人能给出正确的解决方案,我们将不胜感激?
谢谢

筛选出要保留的密钥,然后筛选出要移动到内部目录的密钥,然后插入内部目录

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)