Я пытаюсь создать словарь из списка, содержащего кортежи (n1, n2). Для этого я написал функцию, которая принимает в качестве аргумента этот список и возвращает словарь {'n1': {'n2'}, et c.} Проблема, с которой я столкнулся, заключается в том, что список содержит несколько кортежей с одним и тем же ключом. (n1), но другое значение (n2). В основном, инструкция else не работает, и я не уверен, почему.
def construction_dict_amis(f_lst):
"""builds and returns a dictionary of people (keys) who declare all their friends (as values)
f_lst: couple list(n1, n2): n1 has friend n2
if n1 has more than 1 friend add another name to that key
if for the couple (n1, n2) n2 does not declare any friends an empty set will be created
"""
f = {}
for n1, n2 in f_lst:
if n1 not in n2:
f[n1] = {n2}
else:
f[n1].extend(n2) #add n2 to n1 if n1 already present ?
if n2 not in f:
f[n2] = set() # new entry first name2
return f
print(construction_dict_amis([('Mike', 'Peter'),('Thomas', 'Michelle'),('Thomas', 'Peter')]))
ожидаемый результат:
{'Mike' : {'Peter'}, 'Peter' : set(), 'Thomas' : {'Michelle', 'Peter'}, 'Michelle' : set()}
фактический результат:
{'Mike': {'Peter'}, 'Peter': set(), 'Thomas': {'Peter'}, 'Michelle': set()}