In Python kunt u gemakkelijk geformatteerde strings gebruiken om variabelen te weergeven.
Met geformatteerde strings (f-strings) kun je variabelen in een string opnemen door de string te voorzien van het voorvoegsel f of F en expressies te schrijven als {expressie}
.
Als je een f-string hebt, kun je de :10
gebruiken om er zeker van te zijn dat deze 10 karakters breed is. Zo kun je een dictionary als tabel weergeven.
Als u nieuw bent met Python programmeren, moet u eerst de basis leren.
Formatteer dictionary als tabel met f-strings
Als u een nieuwere versie van Python heeft (>3.5) kunt u gebruik maken van f-strings. Hiermee kunt u de strings eenvoudig weergeven.
Eerst definiëren we een dictionary, dan itereren we erover met een for-loop en formatteren we het met f-strings.
>>> table = { "Alice": 12, "Jim": 15, "Tim": 19 }
>>> for name, id in table.items():
... print(f'{name:10} => {id:10d}')
...
Alice => 12
Jim => 15
Tim => 19
>>>
Als u een header wilt toevoegen, roept dan eerst de print functie op, met als parameter de header tekst.
d = { "Alice": 128, "Bob": 256, "Tim": 512, "Jim": 1024 }
print(f"Key{' ':14} Value{' ':15}")
for k, v in d.items():
print(f"{k:8}{v:15}")
Dit geeft het volgende resultaat
Key Value
Alice 128
Bob 256
Tim 512
Jim 1024
Bestaande functies
Je kunt ook een bestaande functie gebruiken, zoals deze die ik op het web heb gevonden. Persoonlijk geef ik de voorkeur aan het formatteren met f-strings, maar dit is misschien wat je zoekt.
def printTable(myDict, colList=None):
if not colList:
colList = list(myDict[0].keys() if myDict else [])
myList = [colList] # 1st row = header
for item in myDict:
myList.append([str(item[col] or '') for col in colList])
#maximun size of the col for each element
colSize = [max(map(len,col)) for col in zip(*myList)]
#insert seperating line before every line, and extra one for ending.
for i in range(0, len(myList)+1)[::-1]:
myList.insert(i, ['-' * i for i in colSize])
#two format for each content line and each seperating line
formatStr = ' | '.join(["{{:<{}}}".format(i) for i in colSize])
formatSep = '-+-'.join(["{{:<{}}}".format(i) for i in colSize])
for item in myList:
if item[0][0] == '-':
print(formatSep.format(*item))
else:
print(formatStr.format(*item))
d = { "Alice": 128, "Bob": 256, "Tim": 512, "Jim": 1024 }
printTable([d])
Deze geeft de tabel weer in ascii art:
------+-----+-----+-----
Alice | Bob | Tim | Jim
------+-----+-----+-----
128 | 256 | 512 | 1024
------+-----+-----+-----
Gerelateerde links:
Top comments (0)