2014-10-12 14 views
-3

Я написал код только для удовольствияСортировка питон на основе значения

symbols = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "o", "p", "q",   "r", "s", "t", "u", "v", "w", "x", "y", "z"] 
numbers = [] 
counter = 0 

print("Enter Name") 
name = input(">") 
if name: 
    new_name = list(name) 

    for x in range(0, len(symbols)): 
     count_name = new_name.count(symbols[x]) 
     numbers.append(count_name) 
     if count_name: 
      counter += 1 
    print("Character amount =", counter) 

    for x in range(0, len(numbers)): 
     if numbers[x]: 
      print(symbols[x], "=", numbers[x]) 
else: 
    print("Input = NULL") 

Когда вы вводите ваше имя, например Ремер

Он печатает что-то вроде этого:

Character amount = 4  
e = 2  
m = 1  
o = 1  
r = 2  

Но я хочу, чтобы он сортировался на основе того, какой символ встречается чаще всего

+1

. Какую попытку вы предприняли для реализации этого? – jonrsharpe

+0

Ну, я знаю, что есть метод сортировки, но я не знаю, как это реализовать. – Roemerdt

+1

Итак, вы ... прочитали соответствующую документацию? Сделал попытку реализовать что-то, что пошло не так? Попытка исправить эту реализацию безрезультатно? Или просто бросили это на нас? – jonrsharpe

ответ

1
for number, symbol in sorted(zip(numbers, symbols), reverse=True): 
    if number: 
     print(symbol, number) 
+0

Большое спасибо! Возможно, вы также знаете, как отображать наиболее часто встречающийся символ, а также если есть несколько наивысших символов, таких как e = 3 и r = 3. Таким образом, в основном отображаются все наиболее часто встречающиеся символы. – Roemerdt

0

Если не домашнее задание использовать стандартный счетчик библиотеки в коллекции обеспечивают необходимую функциональность

from collections import Counter 
x =Counter("roemer") 
x.most_common() 

>>> [('r', 2), ('e', 2), ('m', 1), ('o', 1)] 

выход наиболее распространенным уже отсортирован. могут использовать другие методы определения класса использования класса Counter для получения вывода в необходимом формате.

+0

Это не домашнее задание, но я уже делал это так. sort_dic = dict (отсортировано (zip (символы, числа))) maxval = max (sort_dic.items(), key = operator.itemgetter (1)) [1] max_keys = [k для k, v в sort_dic.items() если v == maxval] max_sort_keys = sorted (max_keys) try: if max_sort_keys [1]: print («Наиболее частые символы», max_sort_keys), кроме IndexError: print («Самый частый символ», max_sort_keys) print («Количество символов = ", counter) – Roemerdt

+0

, то вы согласитесь, что x.most_common() гораздо читабельнее – Joop

+0

Im на мобильном atm будет Counter принимать переменную? – Roemerdt

Смежные вопросы