我有一本字典:
dic={'Tim':3, 'Kate':2}
我想将其输出为:
Name Age
Tim 3
Kate 2
这是第一个convert them into a list of dictionaries,
的好方法lst = [{'Name':'Tim', 'Age':3}, {'Name':'Kate', 'Age':2}]
然后通过https://stackoverflow.com/a/10373268/156458?
中的方法将它们写入表格或者在某种意义上有没有更好的方法?
答案 0 :(得分:4)
嗯,你不必在字典中转换它,你可以直接:
print('Name Age')
for name, age in dic.items():
print('{} {}'.format(name, age))
答案 1 :(得分:4)
你可以使用熊猫。
In [15]: import pandas as pd
In [16]: df = pd.DataFrame({'Tim':3, 'Kate':2}.items(), columns=["name", "age"])
In [17]: df
Out[17]:
name age
0 Tim 3
1 Kate 2
答案 2 :(得分:3)
您可以直接在
中执行此操作>>> print("Name\tAge")
Name Age
>>> for i in dic:
... print("{}\t{}".format(i,dic[i]))
...
Tim 3
Kate 2
>>>
如果作为脚本执行它会显示得更好
Name Age
Tim 3
Kate 2
对于其他表示
lst = [{'Name':'Tim', 'Age':3}, {'Name':'Kate', 'Age':2}]
print("Name\tAge")
for i in lst:
print("{}\t{}".format(i['Name'],i['Age']))
对于你的最后一个问题 - 首先将它们转换为字典列表是一种好方法答案是否,字典经过哈希处理并提供比列表
答案 3 :(得分:1)
迭代字典并打印每个项目。
演示:
>>> dic = {'Tim':3, 'Kate':2}
>>> print "Name\tAge"
Name Age
>>> for i in dic.items():
... print "%s\t%s"%(i[0], i[1])
...
Tim 3
Kate 2
>>>
按CSV模块
>>> import csv
>>> dic = {'Tim':3, 'Kate':2}
>>> with open("output.csv", 'wb') as fp:
... root = csv.writer(fp, delimiter='\t')
... root.writerow(["Name", "Age"])
... for i,j in dic.items():
... root.writerow([i, j])
...
>>>
输出:output.csv文件内容
Name Age
Tim 3
Kate 2
我们也可以使用root.writerows(dic.items())
答案 4 :(得分:1)
你可以这样做,
format = "{:<10}{:<10}"
print format.format("Name","Age")
for name,age in dic.iteritems():
print format.format(name,age)
我已经将一个简单的库编写为漂亮的打印字典作为表格 https://github.com/varadchoudhari/Neat-Dictionary 它使用类似的实现
答案 5 :(得分:0)
如果您希望获得更大的数字,那么在第一栏中输入数字通常是比较安全的选择,因为您永远不知道名字可以长到多久。
给出python3:
dic={'Foo':1234, 'Bar':5, 'Baz':123467}
此:
print("Count".rjust(9), "Name")
rint("\n".join(f'{v:9,} {k}' for k,v in dic.items()))
打印
Count Name
1,234 Foo
5 Bar
123,467 Baz