[编程之禅]一行代码系列: 格式化输出字典

The Zen of Python: One Line Code

今天有一位Python刚入门的女性朋友请教我一个问题: 有一个list, 其中存储的是dict, 每个dict的key是相同的,dict的值是整型数值, 请用Python代码将其输出成表格格式。例如:

[{'a': 1, 'b': 2, 'c': 3},{'a': 4, 'b': 5, 'c': 6},{'a': 7, 'b': 8, 'c': 9}]
=> a b c
   1 2 3
   4 5 6
   7 8 9

其实是很简单的需求, 后来仔细琢磨想起逛知乎时大家晒的一行代码,决定尝试一下。刚开始思考从各种iterator入手做处理, 尝试了很久不得其法。由于这两年写Java写的太多,灵光一闪想到functional program中各种apply、map、reduce、filter等函数式写法, 一查之下Python果然有这种写法,遂得之。代码如下:

One Line Code

#! /usr/bin/env python
# -*- coding: utf-8 -*-


def format(lst: list) -> str:
    return '\n'.join([' '.join(lst[0]),'\n'.join(map(lambda d : ' '.join([str(x) for x in d.values()]), lst))])


if __name__ == '__main__':
    data = [{'a': 1, 'b': 2, 'c': 3}, {'a': 4, 'b': 5, 'c': 6}, {'a': 7, 'b': 8, 'c': 9}]
    print(format(data))

Origin Code

#! /usr/bin/env python
# -*- coding: utf-8 -*-


def format(lst: list) -> str:
    header = ' '.join(lst[0])
    store = []
    for item in lst:
        store.append(' '.join(str(x) for x in item.values()))
    return '\n'.join([header, '\n'.join(store)])


if __name__ == '__main__':
    data = [{'a': 1, 'b': 2, 'c': 3}, {'a': 4, 'b': 5, 'c': 6}, {'a': 7, 'b': 8, 'c': 9}]
    print(format(data))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 原文 原文下载之后的格式略有点不友好,利用简述的markdown,编辑一下.版权归原作者 PEP Index > ...
    大飞哥阅读 7,313评论 0 0
  • Introduction This document gives coding conventions for t...
    wuutiing阅读 10,155评论 0 9
  • 个人笔记,方便自己查阅使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik阅读 67,855评论 0 5
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 11,304评论 0 10
  • 几乎每天早上女儿都是一开始磨磨蹭蹭的,到后来没吃完早饭就要上学走了,从明天开始要帮她改正过来!今天放学回来告诉我又...
    李金哲妈妈阅读 1,796评论 0 2

友情链接更多精彩内容