Создайте набор неповторяющихся букв в слове с помощью Python

#python #python-3.x #set

#python #python-3.x #набор

Вопрос:

Я должен создать набор, включающий все буквы, которые не повторяются в слове.

'balloon', 'banana' результат example words: {'b','a,','n'}, {'b'}

Я на самом деле не могу понять, как подойти к этому, но я попробовал что-то совершенно бесполезное.

 word1, word2 = {"balloon"},{"banana"}

set_word1 = set("balloon",)
set_word2 = set("banana")

print(set_word1.difference(word1))
  

Я буду признателен за вашу помощь.

Комментарии:

1. XOR может помочь, но если буквы повторяются нечетное количество раз, тогда это будет отображаться: (

2. Попробуйте опубликовать на codegolf.stackexchange.com ? Похоже, кому-то может понравиться пытаться решить.

3. Попробуйте посмотреть коллекции. Счетчик. Например collections.Counter("balloon") , вернет словарь, показывающий, сколько раз появляется каждая буква. Затем вам нужно создать набор из тех ключей, значение которых равно 1.

4. @FrankYellin Спасибо за ваше предложение.

Ответ №1:

 >>> from collections import Counter
>>> 
>>> w1="balloon"
>>> w2="banana"
>>> 
>>> def f(w):
...     return set({k for k, v in Counter(w).items() if v == 1})
... 
>>> 
>>> f(w1)
{'b', 'a', 'n'}
>>> f(w2)
{'b'}
>>> 

  

набор не допускает повторяющихся элементов, поэтому, если они у вас есть, это не набор

Комментарии:

1. Почему вы создаете словарь, а затем отбрасываете значения? Просто перейдите с: {k for k, v in Counter(w).items() if v == 1}

2. Честно говоря, это не то решение, которое я ожидал (я думаю, что изменения, которые я внес в вопрос, можно просмотреть). Я уже имел в виду это решение, но поскольку я не мог найти другого способа сделать это, используя только установленные функции, я решил отредактировать свой вопрос и принять этот ответ, чтобы кто-то еще мог извлечь из него пользу. Но я получил отрицательный ответ за это, странные люди. Я не знаю, ожидают ли они, что я удалю вопрос или что.