簡體   English   中英

如何以表格形式和字母順序打印字典?

[英]How to print a dictionary in tabular form and alphabetically?

我有一本字典,希望以表格形式打印,第一個標題為“代碼”,第二個標題為“名稱”,然后按字母順序排序。

我目前有:

 import json
 q = my_dict() #which is the dictionary
 d = json.dumps(q)
 print(d)

輸出:

"GEL": "Georgian Lari",
"BOB": "Bolivian Boliviano",
"ZAR": "South African Rand",

這是錯誤的方式,我不知道如何插入列標題。 按字母順序排序也會對我有很大幫助!

Name                   Code
"Bolivian Boliviano"   "BOB"
"Georgian Lari"        "GEL"
"South African Rand"   "Zar"

我正在尋找這樣的東西。

如果第三方模塊是一個選項,您可以使用tabulate

從命令行運行:

$ pip install tabulate

然后在你的腳本中

from tabulate import tabulate

headers = ['Name', 'Code']
data = sorted([(v,k) for k,v in d.items()]) # flip the code and name and sort
print(tabulate(data, headers=headers))

這會給你輸出

Name                Code
------------------  ------
Bolivian Boliviano  BOB
Georgian Lari       GEL
South African Rand  ZAR

我不確定您是否需要引號,但您可以按照您想要的順序打印您的字典:

max_len = max([len(v) for v in d.values()])
padding = 4
for k,v in sorted(d.items(), key=lambda i:i[1]):
    print('{v:{v_len:d}s} {k:3s}'.format(v_len=max_len+padding,
                                           v=v, k=k))

輸出:

Bolivian Boliviano     BOB
Georgian Lari          GEL
South African Rand     ZAR

sortedkey參數確保字典的項目按值排序。

編輯:根據要求,使字段長度與字典值長度匹配(加上一些填充)。

這是我將如何做到的:

import pandas as pd

pd.DataFrame(d)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM