sagen, dass ich dieses verschachtelte Wörterbuch haben:Python: Wie ein verschachteltes Wörterbuch als eine komplexe Tabelle mit variablen Zeilen zu drucken?
d = {'Ben': {'wo_mana': ['Strength = 1.10', 'Speed = 1.50'], 'wi_mana': ['Int = 1.20'], 'Skill': 'true', 'Magic': 'false'},
'Tom': {'wi_mana': ['Int = 1.40'], 'wo_mana': ['Agility = 1.60'], 'Skill': 'true', 'Magic': 'true'}}
Die Schlüssel und Werte sind nicht von mir selbst definiert, sie sind tatsächlich aus einer Datei extrahiert Daten.
Die Anzahl der Werte für Skill
Magic
und festgelegt ist, die jedoch 1.
ist, die Anzahl der Werte für wo_mana
und wi_mana
ist unfixierten ab, das 1, 2, 3, 4 usw.
Im obigen Beispiel haben wo_mana
2 Werte für Ben
.
Mein Ziel ist es, in einer Tabelle (mit einem Tab getrennt) zu drucken und wenn in Excel geöffnet, sieht es wie folgt aus:
Name Skill Magic wo_mana wi_mana
Ben true false Strength = 1.10 Int = 1.20
Speed = 1.50
Tom true true Agility = 1.60 Int = 1.40
Beachten Sie, dass die wo_mana
und wi_mana
Spalten für jeden Menschen, haben mehrere Zeilen.
ich das csv
Modul zu verwenden haben versucht, mein Code:
import csv, itertools
header = ['Name', 'Skill', 'Magic', 'wo_mana', 'wi_mana']
with open('output.csv', 'w') as f:
w = csv.DictWriter(f, header)
w.writeheader()
for key, val in sorted(d.items()):
row = {'Name': key}
row.update(val)
w.writerow(row)
Meine Ausgabe:
Name,Skill,Magic,wo_mana,wi_mana
Ben,true,false,"['Strength = 1.10', 'Speed = 1.50']",['Int = 1.20']
Tom,true,true,['Agility = 1.60'],['Int = 1.40']
So sieht es aus wie es nicht geeignet ist, die mehrere Zeilen Teil drucken mit csv
Also muss ich vielleicht string formatting
verwenden? Kann jemand den Tisch so drucken? Jede Hilfe würde sehr geschätzt werden.
In welches Format soll die Tabelle gedruckt werden, für die Spalte wo_mana und wi_mana? – wolframalpha
@wolframalpha Eine Tabelle getrennt mit Tab oder Komma, einschließlich 'Name',' Skill', 'Magic' sowie' wo_mana' und 'wi_mana', sie müssen in der gleichen Tabelle –
@wolframalpha Ich habe angegeben, wie ich meine möchte Tabelle sieht wie am Anfang meines Beitrags aus. –