初学 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 1
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
看到这头像还以为是我自己发的😂
|