我有源数据,如:
source= [['data1', 'foo'],
['data2', 'bar'],
['data3', 'ddd1'],
['data2', 'ddd2'],
['data2', 'new'],
['data1', 'data']]
我当然可以dict(key,value) for key,value in source
,但这会给我data1: data
,data2: new
和data3: ddd1
。我正在寻找的是:data1: [ 'foo', 'data' ]
,data2: ['bar', 'ddd2']
和data3: [ 'ddd1' ]
,有什么方法可以做到这一点吗?
答案 0 :(得分:1)
您正在寻找defaultdict课程:
>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> source= [['data1', 'foo'],
... ['data2', 'bar'],
... ['data3', 'ddd1'],
... ['data2', 'ddd2'],
... ['data2', 'new'],
... ['data1', 'data']]
...
>>> for k,v in source:
... d[k].append(v)
...
>>> d
defaultdict(<class 'list'>, {'data1': ['foo', 'data'], 'data2': ['bar', 'ddd2', 'new'], 'data3': ['ddd1']})