dizionari append - Praticamente stampare un python dict () ordinato per chiave





3 Answers

Il modulo pprint Python in realtà ordina già i dizionari per chiave. Nelle versioni precedenti a Python 2.5, l'ordinamento veniva attivato solo nei dizionari la cui rappresentazione abbastanza stampata si estendeva su più righe, ma in 2.5.X e 2.6.X, tutti i dizionari sono ordinati.

In generale, tuttavia, se si scrivono strutture di dati in un file e si desidera che siano leggibili e scrivibili, è consigliabile prendere in considerazione l'utilizzo di un formato alternativo come YAML o JSON. A meno che i tuoi utenti non siano essi stessi programmatori, avere loro mantenere la configurazione o lo stato delle applicazioni scaricati tramite pprint e caricati tramite eval può essere un compito frustrante e soggetto a errori.

dictionary

Vorrei stampare un dizionario python su un file usando PrettyPrinter (per la leggibilità umana) ma il dizionario deve essere ordinato per chiave nel file di output per migliorare ulteriormente la leggibilità. Così:

mydict = {'a':1, 'b':2, 'c':3}
pprint(mydict)

stampa attualmente a

{'b':2,
 'c':3,
 'a':1}

Mi piacerebbe PrettyPrint il dizionario, ma averlo stampato in ordine di chiave ad es.

{'a':1,
 'b':2,
 'c':3}

Qual è il modo migliore per farlo?




Un modo semplice per stampare i contenuti ordinati del dizionario, in Python 3:

>>> dict_example = {'c': 1, 'b': 2, 'a': 3}
>>> for key, value in sorted(dict_example.items()):
...   print("{} : {}".format(key, value))
... 
a : 3
b : 2
c : 1

L'espressione dict_example.items() restituisce le tuple, che possono quindi essere ordinate per dict_example.items() sorted() :

>>> dict_example.items()
dict_items([('c', 1), ('b', 2), ('a', 3)])
>>> sorted(dict_example.items())
[('a', 3), ('b', 2), ('c', 1)]

Di seguito è riportato un esempio per stampare i contenuti ordinati dei valori di un dizionario Python.

for key, value in sorted(dict_example.items(), key=lambda d_values: d_values[1]): 
    print("{} : {}".format(key, value))



Potresti trasformare questo dict un po 'per assicurarti che (dato che le diciture non vengono ordinate internamente), ad es

pprint([(key, mydict[key]) for key in sorted(mydict.keys())])



Related


Tags

python