字典列表怎样合并字典中不同的值

2017-12-16 07:56:04 +08:00
 ns2250225
有个字典列表是这样:
l = [
{"name": "mqx", "url": "www.google.com"},
{"name": "mqx", "url": "www.baidu.com"},
{"name": "other", "url": "www.baidu.com"},
]
希望的输出是:
output = [
{"name": "mqx", "url": ["www.google.com", "www.baidu.com"]},
{"name": "other", "url": "www.baidu.com"},
]

请问有什么好的方法吗,希望大神不令赐教
2674 次点击
所在节点    Python
5 条回复
jatesun
2017-12-16 08:31:55 +08:00
遍历后放入字 list 而不是字符串
fml87
2017-12-16 09:00:00 +08:00
```
from collections import defaultdict
d = defaultdict(list)
for i in l:
d[i['name']].append(i['url'])
output = [{"name": i[0], "url": i[1]} for i in d.items()]
```
ns2250225
2017-12-16 09:05:52 +08:00
@fml87 感谢大神!
imn1
2017-12-16 10:42:34 +08:00
pandas groupby

如果仅仅是输出,就没必要用 pandas
不过如果像这种二维变三维,还有后续计算,可以试试 pandas
codingcrush
2017-12-16 12:22:20 +08:00
from itertools import groupby
print([{k: [item["url"] for item in v]} for k, v in groupby(l, key=lambda item: item["name"])])

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

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

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

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

© 2021 V2EX