python字典遍历输出_python – 循环遍历字典并以特定格式打印

这篇博客探讨了如何使用Python字典存储书籍窃贼信息,并尝试将数据以CSV格式输出。博主遇到了输出混乱的问题,并展示了一段不成功的代码。随后,提供了改进的字典结构和整洁的格式化输出方法,确保了数据的清晰排列。
摘要由CSDN通过智能技术生成

我有以下字典:

# a small DB of people who stole my books

dic = {

'Cohen' : 'Calvino' 'Evertt' 'Borges',

'Larry' : 'The Bible',

'Volanski' : 'Phone Book'

}

# here's an abortive attempt to print it in a CSV format

for k in dic.keys():

print (k, '')

for v in dic.keys():

print (dic[v], ' ')

这是丑陋的输出:

Volanski

Phone Book

CalvinoEverttBorges

The Bible

Cohen

Phone Book

CalvinoEverttBorges

The Bible

Larry

Phone Book

CalvinoEverttBorges

The Bible

这就是我希望输出看起来像:

Cohen Larry Volanski

Calvino The Bible Phone Book

Evertt

Borgest

(只有标签分隔,我没有在这里显示)

最佳答案

你可以制定整洁的格式

dic = {'Cohen' : ['Calvino', 'Evertt', 'Borges'],

'Larry' : ['The Bible'],

'Volanski' : ['Phone Book']}

# Get max name size

mx_nm_len = len(max(dic,key=len))

mx_bk_len = max([len(max(books, key=len)) for books in dic.itervalues()])

# Store max name size + 1

mx = max([mx_nm_len, mx_bk_len]) + 1

# Store people

keys = dic.keys()

# Create generic format code to print neat list

fmat = ("%-"+str(mx)+"s")*len(keys)

# Print header line

print fmat % tuple(keys)

# similar to zip command but works for any number of lists

# Assumes all dic.values() are lists

# "zips" to longest list and uses None when any given list runs out of values

books = map(None, *dic.values())

# replaces None values in row outputs with empty strings and prints result using

# string format code (fmat)

for row in books:

row = tuple([book if book!= None else "" for book in row])

print fmat % row

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值