Как достать два минимальных из множества в 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)