2013-11-08 4 views
0

Я довольно новичок в Python и все еще испытываю проблемы с отображением данных, которые у меня есть так, как я хочу. У меня есть этот код, который определяет самый частый символ в строке. Однако, как я его распечатываю как таковой: ('A', 3).Pretty-printing data from counter - Python

stringToData = raw_input("Please enter your string: ") 
import collections 
print (collections.Counter(stringToData).most_common(1)[0]) 

Я просто хотел некоторое представление о том, как манипулировать этим кодом, чтобы что-то похожее на это:

print "In your string, there are: %s vowels and %s consonants." % (vowels, cons) 

Очевидно, было бы сказать, «в строке, наиболее частый символ (символ), которое произошло (число) раз ».

Я использую Python 2.7, и я попытался использовать pprint, но я действительно не понимал, как включить его в мой существующий код.

Редактировать: В принципе, я спрашиваю, как я могу кодировать поиск наиболее частого символа в строке и печатать его таким образом, как «В вашей строке наиболее частым символом является символ (символ), который произошел (число) раз. "

+1

Что именно вы надеетесь 'pprint' сделать для вас здесь? Все, что он делает, это настроить способ распечатки больших коллекций; вы не пытаетесь отобразить коллекции вообще. – abarnert

ответ

4

Я не уверен, если это то, что вы хотите, но это будет печатать наиболее частый характер, затем с числом вхождений:

import collections 

char, num = collections.Counter(stringToData).most_common(1)[0] 
print "In your string, the most frequent character is %s, which occurred %d times" % (char, num) 

Это возвращает кортеж из наиболее частого характера и количество вхождений.

collections.Counter(stringToData).most_common(1)[0] 
#output: for example: ('f', 5) 

Пример:

stringToData = "aaa bbb ffffffff eeeee" 
char, num = collections.Counter(stringToData).most_common(1)[0] 
print "In your string, the most frequent character is %s, which occurred %d times" % (char, num) 

Выход:

In your string, the most frequent character is f, which occurred 8 times 
+0

Это ТОЧНО, что я искал. Спасибо. – bij0ux

0

Здесь ничего не нужно для pprint. Этот модуль посвящен настройке того, как печатаются отпечатки вложенных подтипов коллекции, контролируя порядок отображения ключей словаря или элементов набора и т. Д. Вы вообще не пытаетесь распечатать коллекцию, просто распечатайте некоторую информацию об этом ,

Первое, что вы хотите сделать, это сохранить коллекцию вокруг вместо его восстановления для каждого оператора печати:

counter = collections.Counter(stringToData) 

Далее, вы должны выяснить, как получить данные, которые вы хотите от него. Вы уже знаете, как найти одну пару значений:

letter, count = counter.most_common(1)[0] 

Другая вещь, которую вы просили о том, граф гласных и согласных звуков. Для этого, вы хотите сделать что-то вроде этого:

all_vowel = set('aeiouyAEIOUY') 
all_consonants = set(string.ascii_letters) - all_vowels 
vowels = sum(count for letter, count in counter.iteritems() 
      if letter in all_vowels) 
cons = sum(count for letter, count in counter.iteritems() 
      if letter in all_consonants) 

А теперь вам просто нужно распечатать их с помощью какой-то форматирование, которое вы уже знаете, как это сделать:

print "In your string, there are: %s vowels and %s consonants." % (vowels, cons) 
print ("In your string, the most frequent character is %s, which occurred %s times." 
     % (letter, count)) 
+0

Гласные и минусовые части являются частью другого кода, который я уже выполнил. Я просто представил пример того, как я хотел, чтобы он выглядел. – bij0ux