List元素合并到dict
David Wong提问
David Wong yydavid.wong@gmail.com 发件人当地时间: 发送时间 15:06 (GMT+08:00)。发送地当前时间:下午2:15。 ✆ 主题: [CPyUG] 上来求一个dict合并的优雅一点的方法
有这样一个list
Toggle line numbers
1 qrs = [{'type': 'a', 'data': 'hello'},
2 {'type': 'b', 'data': 'hello1'},
3 {'type': 'b', 'data': 'hello2'},
4 {'type': 'b', 'data': 'hello3'},
5 {'type': 'a', 'data': 'hello4'},
6 {'type': 'a', 'data': 'hello5'},
7 {'type': 'b', 'data': 'hello6'},
8 {'type': 'b', 'data': 'hello7'}, ]
9
10 #想得到合并后的结果
11
12 result = [{'type': 'a', 'data': ['hello', 'hello4', 'hello5']},
13 {'type': 'b', 'data': ['hello1', 'hello2', 'hello3', 'hello6', 'hello7']}, ]
自己写了一段c样式代码实现了,但觉得很不优雅,很丑陋。 所以问问各位有什么更优雅更Pythonic的方法实现
WooParadog:itertools
WooParadog guohaochuan@gmail.com 发件人当地时间: 发送时间 17:09 (GMT+08:00)。发送地当前时间:下午2:14。 ✆
Toggle line numbers
1 if __name__ == '__main__':
2 qrs = [{'type': 'a', 'data': 'hello'},
3 {'type': 'b', 'data': 'hello1'},
4 {'type': 'b', 'data': 'hello2'},
5 {'type': 'b', 'data': 'hello3'},
6 {'type': 'a', 'data': 'hello4'},
7 {'type': 'a', 'data': 'hello5'},
8 {'type': 'b', 'data': 'hello6'},
9 {'type': 'b', 'data': 'hello7'},
10 ]
11
12 import itertools
13 import operator
14
15 li=[]
16 qrs.sort(key=operator.itemgetter('type'))
17 for k,g in itertools.groupby(qrs,key=operator.itemgetter('type')):
18 dic.append({'type':k,'data':[i['data'] for i in g]})
19 print li
Leo Jay:collections
Leo Jay python.leojay@gmail.com 发件人当地时间: 发送时间 11:30 (GMT+08:00)。发送地当前时间:下午2:12。 ✆
sunshine:setdefault()
sunshine zy.netsec@gmail.com 发件人当地时间: 发送时间 12:43 (GMT+08:00)。发送地当前时间:下午2:10。 ✆
反馈
创建 by -- ZoomQuiet [2011-11-28 06:17:33]