在做 code review 的时候,发现有同学的代码看起来不那么 pythonic,忍不住写篇短文介绍两个函数:setdefault 与 defaultdict。
有这样的需求,一个列表,里面是(key, value) 这样的键值对元组,要将它转换成一个字典对象,并将key相同的value作为一组。看代码:
[Python] 纯文本查看 复制代码
1
2
3
4
5
6
|
data = [( "p" , 1 ), ( "p" , 2 ), ( "p" , 3 ),
( "h" , 1 ), ( "h" , 2 ), ( "h" , 3 )]
要转换成
result = {
'p' : [ 1 , 2 , 3 ], 'h' : [ 1 , 2 , 3 ]}
|
下面这个方法是大家都能想到的,先判断result中有没有key,没有则为其初始化一个列表,有则直接将value值append到列表中。但这段代码在Python中不怎么优雅
[Python] 纯文本查看 复制代码
1
2
3
|