首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在字典中附加相同的键

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

Stack Overflow用户
提问于 2021-08-12 01:17:40
回答 1查看 70关注 0票数 0

我有下面的字典

代码语言:javascript
复制
 _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' } 
]

密码在下面。你能告诉我错误在哪里吗?

代码语言:javascript
复制
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)

我的出路是

代码语言:javascript
复制
{'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']}
}}

'Tester'

  • Basically

  • 错误出现在没有添加角色的角色上,每次追加最后一个角色

  • 最后一个字典时都应该包含“角色”:“Developer”、“Tester”,my是“角色”:

  • 角色必须合并到列表

中。

我的期望是

代码语言:javascript
复制
{'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']}
}}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-12 01:33:33

首先,你的意见应该是:

代码语言:javascript
复制
_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' }]

我想你想念左边。我试过这个代码

代码语言:javascript
复制
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循环的第3行,我将您代码中的"emp_id“替换为"element_id”。所以它起作用了。我的结果是:

代码语言:javascript
复制
{"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']}}}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68750537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档