Top.Mail.Ru

Перечень алгоритмов

21. Строки. Поиск в строке

Строка содержит только заглавные буквы латинского алфавита (ABC…Z).Определите сколько раз встречается каждый символ. Выведите словарь, упорядоченный:

    • по убыванию значений
    • по возрастанию ключей

Выведите максимальное значение и ключ для этого значения.

st ='TFOBMOISUZUTULGEBPSZJKFQWZ'  # строка
s ="QWERTYUIOPASDFGHJKLZXCVBNM"   # алфавит

 

Способ № 1 Использование цикла for и словаря

d = {}
for x in s :
    
if st.count(x)!=0:
       d[x] = st.count(x)
d1 = { x:v
for x, v in sorted(d.items(), key = lambda x: x[1], reverse=1) }
print(d1)          # по убыванию значений
d1 = { x:v for x, v in sorted(d.items(), key = lambda x: x[0], reverse=0) }
print(d1)          # по возрастанию ключей
mx = max(d.values())
for x, v in d.items():
  
if v == mx:
      
print(v,":", x) # максимальное значение и ключ для этого значения

{'U': 3, 'Z': 3, 'T': 2, 'O': 2, 'S': 2, 'F': 2, 'B': 2, 'Q': 1, 'W': 1, 'E': 1, 'I': 1, 'P': 1, 'G': 1, 'J': 1, 'K': 1, 'L': 1, 'M': 1}
{'B': 2, 'E': 1, 'F': 2, 'G': 1, 'I': 1, 'J': 1, 'K': 1, 'L': 1, 'M': 1, 'O': 2, 'P': 1, 'Q': 1, 'S': 2, 'T': 2, 'U': 3, 'W': 1, 'Z': 3}

3 : U
3 : Z

 

 

Способ № 2 Использование множества и словаря

d = {x:st.count(x) for x in set(st) }
print(sorted(d.items(), key = lambda x: x[1], reverse=1))
print(sorted(d.items()))
mx =
max(d.values())
for x, v in d.items():
    
if v == mx:
      
print(v,":", x)

[('Z', 3), ('U', 3), ('F', 2), ('O', 2), ('B', 2), ('T', 2), ('S', 2), ('K', 1), ('E', 1), ('G', 1), ('W', 1), ('P', 1), ('J', 1), ('I', 1), ('M', 1), ('L', 1), ('Q', 1)]
[('B', 2), ('E', 1), ('F', 2), ('G', 1), ('I', 1), ('J', 1), ('K', 1), ('L', 1), ('M', 1), ('O', 2), ('P', 1), ('Q', 1), ('S', 2), ('T', 2), ('U', 3), ('W', 1), ('Z', 3)]

3 : Z
3 : U