将字典打印到表格中

时间:2015-03-25 19:39:42

标签: python python-2.7 dictionary

我有一本字典:

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

中的方法将它们写入表格

或者在某种意义上有没有更好的方法?

6 个答案:

答案 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