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

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

作者: 张夜白哥哥 | 来源:发表于2019-02-15 19:33 被阅读0次

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))

相关文章

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/skgmeqtx.html