Как достать два минимальных из множества в python?

Задача такая: нужна достать буквы, которые встречаются в тексте только 1 раз. Я пробовал использовать min, но он достает только одно значение и больше вариантов нет.

b = 'moonmens'
s = {}
m = ''
for i in b:
if i in s:
    s[i] += 1
if i not in s:
    s.setdefault(i, 1)

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

Автор решения: S. Nick

как вариант:

b = 'moonmens'
print(*[ i for i in b if b.count(i) == 1], sep='\n')
→ Ссылка
Автор решения: Zhihar

код для вывода букв которые встречаются минимальное число раз (даже если их больше 1):

text = "moonmens"

# получить уникальные буквы
letters = set(text)

# подсчитать кол-во уникальных букв в тексте
counts = [(letter, text.count(letter)) for letter in letters]

# отсортировать список
counts.sort(key=lambda obj: obj[1])

# вывести буквы с минимальным кол-вом повторений
count = counts[0][1]
res = [obj[0] for obj in counts if obj[1] == count]

print(*res)

код для ситуации с единократным встречанием буквы в тексте:

res = [letter for letter in text if text.count(letter) == 1]

print(*res)
→ Ссылка
Автор решения: passant

достать буквы, которые встречаются в тексте только 1 раз.

b = 'moonmens'
for c in set(b):
    if b.count(c)==1:
        print (c)

Результат:

e
s
→ Ссылка
Автор решения: MarianD

Примените класс Counter из стандартного модуля collections — он автоматически вычислит количества появлений всякой буквы в форме подобной словарю.

Затем выберите только буквы с количеством 1:

from collections import Counter

counter = Counter(b)       # для b == 'moonmens': {'m': 2, 'o': 2, 'n': 2, 'e': 1, 's': 1}
for char in counter:
    if counter[char] == 1:
        print(char)
→ Ссылка