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