python defaultdict

有一个 list ,想根据其中一个 value 进行分组,部分可能对应多个值,所以需要将分组后的数据放在list 里面,如下根据 user_id 进行分组:

1
2
3
4
5
6
7
8
9
10
11
12
13
In [330]: from  collections import defaultdict
In [331]: node_list = [{'user_id': 1, 'node_id': 3},{'user_id': 2, 'node_id': 4},{'user_id': 2, 'node_id': 5},{'user_id': 3, 'node_id': 6},{'user_id': 1, 'node_id': 7}]
In [332]: u_dict = defaultdict(list)

In [333]: for n in node_list:
...: print(n['user_id'])
...: u_dict[n['user_id']].append(n)
In [335]: u_dict
Out[335]:
defaultdict(list,
{1: [{'node_id': 3, 'user_id': 1}, {'node_id': 7, 'user_id': 1}],
2: [{'node_id': 4, 'user_id': 2}, {'node_id': 5, 'user_id': 2}],
3: [{'node_id': 6, 'user_id': 3}]})

就酱。