Python 如何实现这样的数据结构

2017-08-22 16:28:22 +08:00
 hiboshi

初学 py,貌似 不支持 php 这样 dict+=字符 的写法。

$aa = array(

    array('id'=>1,'txt'=>"aaa"),
    array('id'=>1,'txt'=>"bbb"),
    array('id'=>1,'txt'=>"ccc"),
    array('id'=>2,'txt'=>"ddd"),
    array('id'=>2,'txt'=>"eee"),
    array('id'=>3,'txt'=>"fff"),
);

foreach ( $aa as $k=>$v) {
    $tmp[$v['id']] .= $v['txt'].'|';
}
print_r($tmp);
exit();
1543 次点击
所在节点    问与答
5 条回复
ryd994
2017-08-22 16:46:04 +08:00
.append
kkhaike
2017-08-22 16:48:03 +08:00
aa = [
{'id': 1,'txt': "aaa"},
{'id': 1,'txt': "bbb"},
{'id': 1,'txt': "ccc"},
{'id': 2,'txt': "ddd"},
{'id': 2,'txt': "eee"},
{'id': 3,'txt': "fff"},
]

tmp = {}
for v in aa:
tmp[v['id']] = ((v['id'] in tmp) and tmp[v['id']] or '') + v['txt'] + '|'
print tmp

有很多写法,这个这是比较类似你的代码
hiboshi
2017-08-22 17:13:27 +08:00
@kkhaike 学到了。其实 也是支持 += 的,只是没用对,你说的 其他方式 是哪些的,正常点实现,比如 python 是不是有什么 语法 能直接实现 这种功能?不需要按照上面的 php 思维方式
petelin
2017-08-22 20:29:26 +08:00
In [22]: for item in aa:
...: tmp[item['id']]= tmp.get(item['id'], '') + item['txt'] + '|'
petelin
2017-08-22 20:43:51 +08:00
In [73]: for k,g in groupby(aa, lambda x:x['id']):
...: tmp[k] = '|'.join([item['txt'] for item in list(g)]) + '|'

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/384891

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX