Pergunta

Sou bastante novo no Python e ainda tenho problemas para exibir dados que tenho da maneira que quero. Eu tenho esse código que determina o caractere mais frequente em uma string. No entanto, como eu o imprime como tal: ('A', 3).

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

Eu só queria algumas dicas sobre como manipular esse código para algo semelhante a isso:

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

Obviamente, diria: "Na sua corda, o personagem mais frequente é (personagem), que ocorreu (número) vezes".

Estou usando o Python 2.7 e tentei usar o pprint Mas eu realmente não entendi como incorporar isso ao meu código existente.

EDIT: Basicamente, o que estou perguntando é como posso codificar encontrar o caractere mais frequente em uma string e imprimi -la de uma maneira como "Na sua sequência, o caractere mais frequente é (caractere), que ocorreu (número) vezes. "

Foi útil?

Solução

Não tenho certeza se é isso que você deseja, mas isso imprimirá o personagem mais frequente seguido com o número de ocorrências:

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)

Isso retorna uma tupla do caráter mais frequente e do número de ocorrências.

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

Exemplo:

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)

A saída é:

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

Outras dicas

Não há realmente nada para pprint fazer aqui. Esse módulo é sobre a personalização da maneira como as coleções são impressas-subobjetos indentados, controlando a ordem em que as teclas de dicionário ou os elementos de conjunto são exibidos etc. Você não está tentando imprimir uma coleção, basta imprimir algumas informações sobre isso .

A primeira coisa que você deseja fazer é manter a coleção em vez de reconstruí -la para cada declaração de impressão:

counter = collections.Counter(stringToData)

Em seguida, você deve descobrir como obter os dados que deseja. Você já sabe como encontrar um par de valores:

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

A outra coisa que você perguntou é a contagem de vogais e consoantes. Para isso, você vai querer fazer algo assim:

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)

E agora você só precisa imprimi -los usando algum tipo de formatação, que você já sabe como fazer:

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))
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top