Ich verwende das Modul tabulate
, um Informationen auf der Konsole zu drucken. Ich verwende Python 2.6Wie gruppiert man die Spalten alphabetisch mit dem Tabulate-Modul?
ich dies derzeit haben:
+-------------------------------+
| Task | Status | Rating |
|---------+---------------------+
| A | Done | Good |
| B | Done | Bad |
| C | Pending | |
| D | Done | Good |
+---------+----------+----------+
Ich möchte dies zu realisieren:
+-------------------------------+
| Task | Status | Rating |
|---------+---------------------+
| A | Done | Good |
| B | Done | Bad |
| D | Done | Good |
| C | Pending | |
+---------+----------+----------+
So, dass alle der Done
s zusammen gruppiert sind.
Derzeit erhält das tabellieren ein Wörterbuch und ich entpacken Sie die Werte wie folgt aus:
def generate_table(data):
table = []
headers = ['Task', 'Status', 'Rating']
for key, value in data.iteritems():
print key, value
if 'Rating' in value:
m, l = value['Status'], value['Rating']
m = m.split('/')[-1]
temp = [key,m,l]
table.append(temp)
else:
m, l = value['Status'], None
m = m.split('/')[-1]
temp = [key,m,l]
table.append(temp)
print tabulate(table, headers, tablefmt="psql")
In Ihrem Beispiel tauscht die gewünschte Ausgabe die ausstehende Aufgabe von C nach D. Ist das beabsichtigt? – languitar
Sie können das 'if'' else' mit Sicherheit vermeiden, wenn Sie 'value.get ('Rating', None)' verwenden, das einen Standardwert ('None' in diesem Fall) zuweist, wenn der Schlüssel (' 'Rating'' in diesem Fall) ist nicht Teil des Wörterbuchs. Für den Rest kann man nur antworten, wenn man auf @languitar –
@languitar antwortet, das war ein Fehler. Guter Fang – ARL