
初学 py 如果按照这样的写法话 $tmp[$v['id']][$v['t_id']] =$v['txt']; 多维数组会报 keyerrror 下面是 php 实现
$aa = array( array('id'=>1,'t_id'=>100,'txt'=>"aaa"), array('id'=>1,'t_id'=>110,'txt'=>"bbb"), array('id'=>1,'t_id'=>120,'txt'=>"ccc"), array('id'=>2,'t_id'=>130,'txt'=>"ddd"), array('id'=>2,'t_id'=>140,'txt'=>"eee"), array('id'=>3,'t_id'=>150,'txt'=>"fff"), ); $tmp = array(); foreach ($aa as $k=>$v) { $tmp[$v['id']][$v['t_id']] =$v['txt']; } echo $tmp[1][100]; 1 bravecarrot 2017-09-04 10:44:14 +08:00 via iPhone pandas 里面的 dataframe 或者 collections.namedtuple |
2 hiboshi OP @bravecarrot six to fly |
3 terry0314 2017-09-04 10:55:01 +08:00 d = [ {'id': 1, 't_id': 100, 'txt': 'aaa'}, {'id': 2, 't_id': 110, 'txt': 'bbb'}, ] tmp = {} for i in d: t = {} t[i['t_id']] = i['txt'] tmp[i['id']] = t 这样? |
4 nauynah 2017-09-04 10:55:49 +08:00 可以。 ```Python aa = [ {'id': 1, 't_id': 100, 'txt': 'aaa'}, {'id': 1, 't_id': 110, 'txt': 'bbb'}, {'id': 1, 't_id': 120, 'txt': 'ccc'}, {'id': 2, 't_id': 130, 'txt': 'ddd'}, {'id': 2, 't_id': 140, 'txt': 'eee'}, {'id': 3, 't_id': 150, 'txt': 'fff'}, ] # 1、dict.setdefault 方法 tmp = dict() for a in aa: tmp.setdefault(a['id'], {}) tmp[a['id']][a['t_id']] = a['txt'] # 2、collections 模块 defaultdict from collections import defaultdict tmp = defaultdict(dict) for a in aa: tmp[a['id']][a['t_id']] = a['txt'] ``` |
5 Kilerd 2017-09-04 11:01:49 +08:00 via iPhone 你不是问过这个问题吗? |
8 jedihy 2017-09-04 11:59:59 +08:00 不应该会 keyError 呀,这就是一个 array of dictionaries |
11 Trim21 2017-09-04 12:21:00 +08:00 via Android defaultdict ( list ) |
12 didikee 2017-09-04 12:48:30 +08:00 via Android 看到这头像还以为是我自己发的 |