如何以表格形式和字母顺序打印字典?
How to print a dictionary in tabular form and alphabetically?
我有一本字典,希望以表格形式打印,第一个 header 为 "code",第二个为 "name",然后按字母顺序排序。
我目前有:
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"
我正在寻找这样的东西。
我不确定你是否需要引号,但你可以按照你想要的顺序打印字典:
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
sorted
的 key
参数确保字典的项目按值排序。
编辑:根据要求,使字段长度与字典值长度匹配(加上一些填充)。
如果可以选择第三方模块,您可以使用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
我会这样做:
import pandas as pd
pd.DataFrame(d)
我有一本字典,希望以表格形式打印,第一个 header 为 "code",第二个为 "name",然后按字母顺序排序。
我目前有:
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"
我正在寻找这样的东西。
我不确定你是否需要引号,但你可以按照你想要的顺序打印字典:
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
sorted
的 key
参数确保字典的项目按值排序。
编辑:根据要求,使字段长度与字典值长度匹配(加上一些填充)。
如果可以选择第三方模块,您可以使用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
我会这样做:
import pandas as pd
pd.DataFrame(d)