set -множества. Помогите решить задачу

Victoriia

Новичок
Пользователь
Май 4, 2020
8
0
1
Задание 2. Выведите на экран все уникальные гео-ID из значений словаря ids. Т. е. список вида [213, 15, 54, 119, 98, 35]
In [4]:
ids = {'user1': [213, 213, 213, 15, 213],
'user2': [54, 54, 119, 119, 119],
'user3': [213, 98, 98, 35]}
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Вот пример:
Python:
ids = {'user1': [213, 213, 213, 15, 213],
       'user2': [54, 54, 119, 119, 119],
       'user3': [213, 98, 98, 35]}

print(set(sum(ids.values(), [])))
 
  • Мне нравится
  • Я влюблен!
Реакции: Victoriia и borntohack

borntohack

змееуст
Команда форума
Модератор
Апр 22, 2020
78
62
18
39
Москва, РФ
Вот пример:
Python:
ids = {'user1': [213, 213, 213, 15, 213],
       'user2': [54, 54, 119, 119, 119],
       'user3': [213, 98, 98, 35]}

print(set(sum(ids.values(), [])))

Интересный подход с суммированием списков. Он 100% рабочий, но не очень очевидный.
Полагаю, что для топикстартера было бы полезнее узнать именно алгоритм решения задачи.

С вашего позволения, я попробую объяснить решение не оптимальным, но нагядным примером:

В целом, задача привести все значения ключей ids к одномерному списку, а затем перевести эти значения в уникальный набор преобразованием списка в множество (set)
Python:
ids = {'user1': [213, 213, 213, 15, 213],
       'user2': [54, 54, 119, 119, 119],
       'user3': [213, 98, 98, 35]}
#список значений:
lst = ids.values()
#преобразование в одномерный список
newlist = []
for i in lst:
    for j in i:
        newlist.append(j)
#теперь newlist содержит одномерный список всех значений из ids
print(set(newlist))
#вывод только уникальных значений этого списка, поскольку set не может содержать одинаковых элементов.
 
  • Мне нравится
Реакции: stud_55

Victoriia

Новичок
Пользователь
Май 4, 2020
8
0
1
Интересный подход с суммированием списков. Он 100% рабочий, но не очень очевидный.
Полагаю, что для топикстартера было бы полезнее узнать именно алгоритм решения задачи.

С вашего позволения, я попробую объяснить решение не оптимальным, но нагядным примером:

В целом, задача привести все значения ключей ids к одномерному списку, а затем перевести эти значения в уникальный набор преобразованием списка в множество (set)
Python:
ids = {'user1': [213, 213, 213, 15, 213],
       'user2': [54, 54, 119, 119, 119],
       'user3': [213, 98, 98, 35]}
#список значений:
lst = ids.values()
#преобразование в одномерный список
newlist = []
for i in lst:
    for j in i:
        newlist.append(j)
#теперь newlist содержит одномерный список всех значений из ids
print(set(newlist))
#вывод только уникальных значений этого списка, поскольку set не может содержать одинаковых элементов.

А так не правильно?
ids_set_1 = set(ids['user1'])
ids_set_2 = set(ids['user2'])
ids_set_3 = set(ids['user3'])
print(ids_set_3.union(ids_set_2.union(ids_set_1)))
 

Victoriia

Новичок
Пользователь
Май 4, 2020
8
0
1
Интересный подход с суммированием списков. Он 100% рабочий, но не очень очевидный.
Полагаю, что для топикстартера было бы полезнее узнать именно алгоритм решения задачи.

С вашего позволения, я попробую объяснить решение не оптимальным, но нагядным примером:

В целом, задача привести все значения ключей ids к одномерному списку, а затем перевести эти значения в уникальный набор преобразованием списка в множество (set)
Python:
ids = {'user1': [213, 213, 213, 15, 213],
       'user2': [54, 54, 119, 119, 119],
       'user3': [213, 98, 98, 35]}
#список значений:
lst = ids.values()
#преобразование в одномерный список
newlist = []
for i in lst:
    for j in i:
        newlist.append(j)
#теперь newlist содержит одномерный список всех значений из ids
print(set(newlist))
#вывод только уникальных значений этого списка, поскольку set не может содержать одинаковых элементов.
Спасибо, так гораздо понятнее)
 

borntohack

змееуст
Команда форума
Модератор
Апр 22, 2020
78
62
18
39
Москва, РФ
А так не правильно?
ids_set_1 = set(ids['user1'])
ids_set_2 = set(ids['user2'])
ids_set_3 = set(ids['user3'])
print(ids_set_3.union(ids_set_2.union(ids_set_1)))

Да, так правильно, но предполагается, что у вас известный заранее набор данных, и равновеликое статическое количество переменных в коде.
 

Svetlana3777

Новичок
Пользователь
Дек 6, 2022
1
0
1
ids = {'user1': [213, 213, 213, 15, 213],
'user2': [54, 54, 119, 119, 119],
'user3': [213, 98, 98, 35]}
ids_set = set()
for i in ids.values():
for j in i:
ids_set.add(j)
print(*ids_set)
 

Форум IT Специалистов