Domanda Compito in Python

claky33

Utente Iron
11 Novembre 2022
3
2
0
5
Devo realizzare un compito in python, che chiede di confrontare il contenuto di diversi file, il cui nome è da ricavare dalla prima stringa del file precedente. Esempio, la prima stringa del file A ricevuto in input è 'B', la prima stringa di B è 'C' e la prima stringa di C è 'A'. Per ognuno di questi file voglio ottenere un dizionario che associa ogni lettera di ogni parola contenuta alla sua posizione. Esempio, 'ciao' ritorna {0: 'c', 1:'i', 2:'a', 3:'o'}. Infine, bisogna confrontare ogni parola e vedere qual'è la lettera più ricorrente in ogni posizione, così da inserirla in una stringa in quella data posizione. Per esempio, se tra dieci parole sei iniziano con la c, la stringa risultante inizierà con la c. Qualche idea ? Per favore, è importante
 
Ultima modifica da un moderatore:
Posta il codice
Python:
def most_frequent_chars(filename: str) -> str:
    risultato = ottieni_lettere(filename)
 return conteggio(risultato)

def ottieni_lettere(filename):
    file = [filename]
    risultato = []
    p = []
    a = []
count = 0
for x in file:
with open(filename, encoding = 'utf-8') as f:
            parole = f.read().split()
filename = parole[0]
if parole[0] not in file:
            file.append(filename)
 parole.remove[filename]
for parola in parole:
      a.append(len(parola))
 while count < max(a):
b = [parola for parola in p for i in range(len(parola)) if i == count]
        risultato.append(sorted(b))
count += 1
 return risultato

def conteggio(lista):
    l = []
s = ''
    d = {}
for x in lista:
for y in x:
            d[y] = x.count(y)
        l.append(d)
        d = {}
    dizionari = []
for d in l:
        dizionario_ordinato = {}
chiavi_valori = sorted(d.items(), key = lambda x: x[1], reverse = True)
for chiave,valore in chiavi_valori:
            dizionario_ordinato[chiave] = valore
        dizionari.append(list(dizionario_ordinato))
for x in dizionari:
s += x[0]
 return s


Il codice funziona, mi servono solo consigli per ottimizzarlo e velocizzarlo