Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
341 views
in Technique[技术] by (71.8m points)

Printing a Python dictionary in two rows with aligned columns

I want to print a Python dictionary with keys in one row and values in another row.

Example:

d = {'a':'long val', 'b':None, 'long key':3, 'd':4}

I want to print it as

    a    | b | long key | d
long val |   |    3     | 4

How can I do this?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I'd say that either you iterate twice or you build the two output lines first and then display them:

d = {'a': 'long val', 'b': None, 'long key': 3, 'd': 4}
headers = ""
row = ""
for k, v in d.items():
    if row != "":
        row += " | "
        headers += " | "
    max_len = max(len(str(k)), len(str(v)) if v else 1)
    headers += str(k).center(max_len)
    row += str(v).center(max_len) if v else " "
print(headers)
print(row)

But it looks like a lot of hassle to avoid a double iteration over a simple dict.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...