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

weixin_38058113 2019-09-12 11:53:25
我有以下字典: # 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, '\t') 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 (只有标签分隔,我没有在这里显示)
...全文
320 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38087157 2019-09-12
  • 打赏
  • 举报
回复
你可以制定整洁的格式 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

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧