Domanda

Sono abbastanza nuovo per Python e ho ancora difficoltà a visualizzare i dati che ho nel modo in cui voglio. Ho questo codice che determina il carattere più frequente in una stringa. Tuttavia, come lo ho stampati come tale: ('A', 3).

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

Volevo solo alcune informazioni su come manipolare questo codice a qualcosa di simile a questo:

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

Ovviamente direbbe: "Nella tua stringa, il carattere più frequente è (carattere), che si è verificato (numero) volte".

Sto usando Python 2.7 e ho provato a usare il pprint Ma non capivo davvero come incorporarlo nel mio codice esistente.

EDIT: Fondamentalmente, quello che chiedo è come posso programmare la ricerca del carattere più frequente in una stringa e stamparlo in un modo come "nella tua stringa, il carattere più frequente è (carattere), che si è verificato (numero) volte. "

È stato utile?

Soluzione

Non sono sicuro che questo sia quello che vuoi, ma questo stamperà il carattere più frequente seguito dal numero di occorrenze:

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)

Ciò restituisce una tupla del carattere più frequente e il numero di occorrenze.

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

Esempio:

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)

L'output è:

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

Altri suggerimenti

Non c'è davvero niente per pprint da fare qui. Quel modulo riguarda la personalizzazione del modo in cui vengono stampate le raccolte: indennare sotto-oggetti, controllare l'ordine in cui vengono visualizzate le chiavi del dizionario o gli elementi impostati, ecc. Non stai cercando di stampare una collezione, basta stampare alcune informazioni al riguardo .

La prima cosa che vuoi fare è mantenere la collezione in giro invece di ricostruirla per ogni dichiarazione di stampa:

counter = collections.Counter(stringToData)

Successivamente, devi capire come ottenere i dati che desideri. Sai già come trovare una coppia di valori:

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

L'altra cosa che hai chiesto è il conteggio di vocali e consonanti. Per questo, ti consigliamo di fare qualcosa del genere:

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 ora devi solo stamparli usando una sorta di formattazione, che già sai fare:

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))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top