List / Tuples to Dictionaries。如何堆叠数据代替它们?

时间:2016-05-18 11:04:21

标签: python list dictionary data-structures tuples

我有源数据,如:

   source= [['data1', 'foo'],   
      ['data2', 'bar'],
      ['data3', 'ddd1'],
      ['data2', 'ddd2'],
      ['data2', 'new'],
      ['data1', 'data']]

我当然可以dict(key,value) for key,value in source,但这会给我data1: datadata2: newdata3: ddd1。我正在寻找的是:data1: [ 'foo', 'data' ]data2: ['bar', 'ddd2']data3: [ 'ddd1' ],有什么方法可以做到这一点吗?

1 个答案:

答案 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']})