Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Dizionario finale HW4

A
Axel (660 points)
7 14 18
in Avvisi by (660 points)
Buongiorno,

vorrei un delucidazione sul dizionario che deve essere il risultato della funzione, esso deve essere ordinato ?
266 views

2 Answers

Ionut Cicio (5960 points)
2 2 43
by (6.0k points)
edited by
Quando usi un dizionario non ti interessa "ordinare" in genere. Deve essere ordinato solo il contenuto del file "index.txt" che vai a creare. Un dizionario è una struttura ben più complessa di una normale lista, e gli elementi non sono messi "uno dopo l'altro" (è più complicato di così, ma l'idea è quella).
Domenico Giannini (1050 points)
5 13 20
by (1.1k points)
A partire dalla versione 3.7 di Python i dizionari sono ordinati.
Ionut Cicio (5960 points)
2 2 43
by (6.0k points)

Hai ragione, mi sono espresso un po' male con la frase

Quando usi un dizionario non ti interessa "ordinare" in genere

Bisogna stare attenti sul fatto che l'ordine interno del dizionario non ha a che fare con l'ordine degli elementi del dizionario. E comunque, non puoi "ridordinare" come sono arrangiati gli elementi di un dizionario internamente con un "sorted()" o un ".sort()" come faresti per una lista.

Per più dettagli sull'implementazione questo sito potrebbe essere utile https://tenthousandmeters.com/blog/python-behind-the-scenes-10-how-python-dictionaries-work/. In particolare, nella sezione "Compact dictionaries" spiega che

This optimization has other benefits too. Iteration over a dictionary became faster because entries are densely packed. And dictionaries became ordered because items are added to the entries array in the insertion order.

Quindi la rappresentazione interna è "ordinata per inserimento", ma non è una cosa che puoi andare a modificare. In conclusione, quello che intendevo dire è che dal dizionario devi tirarti fuori le coppie chiave/valore e ordinare quelle, non puoi ordinare direttamente un dizionario, è un'operazione insensata.

P.S. per essere più chiaro, un dizionario "ordinato" o "non ordinato", o un set "ordinato" o "non ordinato" riguardo solo l'implementazione del dizionario (e in realtà anche cosa puoi farci: in C++, se usi un "set", che di default è ordinato, hai un metodo per fare la binary_search fra gli elementi)

mirko1010 (5560 points)
13 33 60
by (5.6k points)
Si Ti conviene ordinarlo  prima di scriverlo sul file , in base agli interi in modo decrescente o se  parita alfabeticamente per il titolo , nota che il sorted  sugli items di dizionario resitituisce una lista di tuple se non converti in dizionario