Как правильно объединить с множеством

Я понимаю, что любое union набора python с пустым множеством приведет к самому себе. Но некоторые странные поведения я обнаруживаю, когда union внутри цикла for.

выглядит неплохо

num= set([2,3,4])
emp= set()
print num|emp
>>>set([2, 3, 4])

смущенный

s = set()
inp = ["dr101-mr99","mr99-out00","dr101-out00","scout1-scout2","scout3-    scout1","scout1-scout4","scout4-sscout","sscout-super"]
for ele in inp:
  r = set(ele.split("-"))
  print r
  s.union(r)
print s
 >>>set(['mr99', 'dr101'])
    set(['out00', 'mr99'])
    set(['out00', 'dr101'])
    set(['scout1', 'scout2'])
    set(['scout1', 'scout3'])
    set(['scout4', 'scout1'])
    set(['scout4', 'sscout'])
    set(['super', 'sscout'])
    set([])

кто-нибудь может сказать мне, почему последний набор s пуст? является ли вывод, который должен быть каждый уникальный элемент в множестве?

Ответы

Ответ 1

s.union(r) - новое множество с элементами из s и r. ссылка Вам нужно изменить

s.union(r)

в

s = s.union(r)

или, используйте set.update.