Как переделать список в значении словаря во множество?

Нужно написать функцию friends, которая из списка пар друзей сделает словарь, в котором каждому человеку будет сопоставлено множество его друзей.

friends([("Ivan", "Maria"), 
         ("Ella", "Ivan"), 
         ("Ivan", "Oleg")]) == \
{"Ivan":{"Maria", "Ella", "Oleg"},
 "Ella":{"Ivan"},
 "Maria": {"Ivan"},
 "Oleg": {"Ivan"}}

Вот мой код:

def friends(pairs):
    result = dict()
    for pair in pairs:
        if pair[0] not in result:
            result[pair[0]] = []
        if pair[1] not in result:
            result[pair[1]] = []
        if pair[1] not in result[pair[0]]:
            result[pair[0]].append(pair[1])
        if pair[0] not in result[pair[1]]:
            result[pair[1]].append(pair[0])
    return result


res = friends([("Ivan", "Maria"), ("Ella", "Ivan"), ("Ivan", "Oleg")])
print(res)

Выводит:

{'Ivan': ['Maria', 'Ella', 'Oleg'], 'Maria': ['Ivan'], 'Ella': ['Ivan'], 'Oleg': ['Ivan']}

А надо, чтобы вместо списка в значении словаря было множество:

{'Ivan': {'Maria', 'Ella', 'Oleg'}, 'Maria': {'Ivan'}, 'Ella': {'Ivan'}, 'Oleg': {'Ivan'}}

как можно преобразовать?


Ответы (1 шт):

Автор решения: Zhihar

@Danis сказал, что нужно множество, за что ему спасибо - тогда код такой:

res = dict()

for pair in friends:
    res[pair[0]] = {pair[1]} if pair[0] not in res else res[pair[0]] | {pair[1]}
    res[pair[1]] = {pair[0]} if pair[1] not in res else res[pair[1]] | {pair[0]}

А так не устраивает (по сути в лоб):

friends = [("Ivan", "Maria"),
         ("Ella", "Ivan"), 
         ("Ivan", "Oleg")]

res = dict()

for pair in friends:
    if pair[0] in res:
        res[pair[0]].append(pair[1])
    else:
        res[pair[0]] = [pair[1]]

    if pair[1] in res:
        res[pair[1]].append(pair[0])
    else:
        res[pair[1]] = [pair[0]]

print(res)

или чуть покороче:

res = dict()

for pair in friends:
    if pair[0] not in res: res[pair[0]] = []
    res[pair[0]].append(pair[1])

    if pair[1] not in res: res[pair[1]] = []
    res[pair[1]].append(pair[0])

или еще чуть покороче:

res = dict()

for pair in friends:
    res[pair[0]] = [pair[1]] if pair[0] not in res else res[pair[0]] + [pair[1]]
    res[pair[1]] = [pair[0]] if pair[1] not in res else res[pair[1]] + [pair[0]]
→ Ссылка