我是python初学者,正在从事一个小项目,但无法获得所需的输出。
这是我的输入值,我必须仅保留电子邮件并将其与项目关联,而没有重复的值。 这是我的条目:
my_dictionnary = [
{
"email": ["email1", "email2"],
"project":"projet1",
"project_name":"Project1"
},
{
"email": ["email1", "email2"],
"project":"projet2",
"project_name":"Project2"
},
{
"email": ["email2"],
"project":"projet3",
"project_name":"Project3"
}
]
我要创建输出,如下所示:
my_dictionnary_parsed = {
"email2": ["projet1", "projet2", "projet3"],
"email1": ["projet1", "projet2"]
}
我具有以下功能:
def formating_email(list_of_email):
dictionnary={}
for email_data in list_of_email_data:
for cp in email_data['cp_related']:
print(cp,email_data['ticket_related_project'])
dictionnary[cp] = email_data
但是这些值仍然是最重要的...
答案 0 :(得分:2)
您可以使用defaultdict
from collections import defaultdict
new_dict=defaultdict(list)
for d in my_dictionnary:
proj_name=d['project']
for email in d['email']:
new_dict['email'].append(proj_name)
defaultdict(list,
{'email1': ['projet1', 'projet2'],
'email2': ['projet1', 'projet2', 'projet3']})
答案 1 :(得分:1)
假设您具有正确的字典结构,因为当前的字典结构不正确,您将直接设置dictionnary[cp] = email_data
。您应该附加,因为它是一个列表。
此外,请勿将变量命名为dictionnary
。给他们一些与其功能相对应的有效名称,例如projects_per_email
或其他名称。
def formating_email(list_of_email):
dictionnary={}
for email_data in list_of_email_data:
for cp in email_data['cp_related']:
print(cp,email_data['ticket_related_project'])
if dictionnary.get(cp) == None:
dictionnary[cp] = [email_data]
else:
dictionnary[cp].append(email_data)