Pregunta

Soy bastante nuevo en Python y todavía tengo problemas para mostrar datos que tengo de la manera que quiero. Tengo este código que determina el carácter más frecuente en una cadena. Sin embargo, cómo lo tengo lo imprime como tal: ('A', 3).

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

Solo quería una idea de cómo manipular este código a algo similar a esto:

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

Obviamente, diría: "En tu cadena, el carácter más frecuente es (carácter), que ocurrió (número) veces".

Estoy usando Python 2.7 e intenté usar el pprint Pero realmente no entendí cómo incorporar eso en mi código existente.

EDITAR: Básicamente, lo que estoy preguntando es cómo puedo encontrar el código de encontrar el carácter más frecuente en una cadena e imprimirlo de una manera como "En su cadena, el carácter más frecuente es (carácter), que ocurrió (número) veces. "

¿Fue útil?

Solución

No estoy seguro de si esto es lo que quieres, pero esto imprimirá el personaje más frecuente seguido con el número de ocurrencias:

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)

Esto devuelve una tupla del carácter más frecuente y el número de ocurrencias.

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

Ejemplo:

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)

La salida es:

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

Otros consejos

Realmente no hay nada para pprint hacer aquí. Ese módulo se trata de personalizar la forma en que se imprimen las colecciones: indicar sub-objetos, controlar el orden en que se muestran las claves de diccionario o los elementos establecidos, etc. No está tratando de imprimir una colección, simplemente imprima información al respecto. .

Lo primero que desea hacer es mantener la colección en lugar de reconstruirla para cada declaración de impresión:

counter = collections.Counter(stringToData)

A continuación, debe descubrir cómo sacar los datos que desea. Ya sabes cómo encontrar un par de valores:

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

La otra cosa sobre la que ha preguntado es el recuento de vocales y consonantes. Para eso, querrás hacer algo como esto:

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)

Y ahora solo necesita imprimirlos usando algún tipo de formato, lo que ya sabe cómo hacer:

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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top