如何在字典中附加相同的键

2024-10-05 14:28:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的字典清单

 _list = [
    { 'id': '1', 'contactName': 'John', 'contactEmail': 'John@abc.com', 'role': 'Developer' }, 
    { 'id': '2', 'contactName': 'Elon', 'contactEmail': 'Elon@abc.com', 'role': 'Developer' }, 
    { 'id': '3', 'contactName': 'Suar', 'contactEmail': 'Suar@abc.com', 'role': 'Developer' }, 
    { 'id': '3', 'contactName': 'Suar', 'contactEmail': 'Suar@abc.com', 'role': 'Tester' } 
]

代码如下。你能告诉我错误在哪里吗

list_dict = {}
for element in _list:
    element_id = element.pop('id')
    element_role = element.pop('role')
    list_dict[element_id] = list_dict.get(emp_id, {})
    list_dict[element_id].update(element)
    list_dict[element_id]['role'] = list_dict[element_id].get('role', [])
    list_dict[element_id]['role'].append(element_role)
test = {'contacts': list_dict}
print(test)

我的问题是

{'contacts': {
    '1': {'contactName': 'John', 'contactEmail': 'John@abc.com', 'role': ['Developer']}, 
    '2': {'contactName': 'Elon', 'contactEmail': 'Elon@abc.com', 'role': ['Developer']}, 
    '3': {'contactName': 'Suar', 'contactEmail': 'Suar@abc.com', 'role': ['Tester']}
}}
  • 错误出现在角色未追加的位置,每次追加最后一个角色时都会出错
  • 最后一个字典应该包含'role':['Developer','Tester'],我的输出是'role':['Tester']
  • 基本上,角色必须合并到列表中

我的预期结果是

{'contacts': {
    '1': {'contactName': 'John', 'contactEmail': 'John@abc.com', 'role': ['Developer']}, 
    '2': {'contactName': 'Elon', 'contactEmail': 'Elon@abc.com', 'role': ['Developer']}, 
    '3': {'contactName': 'Suar', 'contactEmail': 'Suar@abc.com', 'role': ['Developer', 'Tester']}
}}

Tags: comiddeveloperelementjohndictlistrole
1条回答
网友
1楼 · 发布于 2024-10-05 14:28:43

首先,您的输入应该是:

_list = [{ 'id': '1', 'contactName': 'John', 'contactEmail': 'John@abc.com', 'role': 'Developer' }, 
{ 'id': '2', 'contactName': 'Elon', 'contactEmail': 'Elon@abc.com', 'role': 'Developer' }, 
{ 'id': '3', 'contactName': 'Suar', 'contactEmail': 'Suar@abc.com', 'role': 'Developer' }, 
{ 'id': '3', 'contactName': 'Suar', 'contactEmail': 'Suar@abc.com', 'role': 'Tester' }]

我想你错过了左边。 我试过这个密码

list_dict = {}
for element in _list:
        element_id = element.pop('id')
        element_role = element.pop('role')
        list_dict[element_id] = list_dict.get(element_id, {})
        list_dict[element_id].update(element)
        list_dict[element_id]['role'] = list_dict[element_id].get('role', [])
        list_dict[element_id]['role'].append(element_role)
test = {'contacts': list_dict}
print(test)

在for循环的第三行,我将ur代码中的“emp_id”替换为“element_id”。因此,它可以工作。我的结果是:

{"contacts": {'1': {'contactName': 'John', 'contactEmail': 'John@abc.com', 'role': ['Developer']}, '2': {'contactName': 'Elon', 'contactEmail': 'Elon@abc.com', 'role': ['Developer']}, '3': {'contactName': 'Suar', 'contactEmail': 'Suar@abc.com', 'role': ['Developer', 'Tester']}}}

相关问题 更多 >