字典合并问题请教

2019-05-07 10:15:06 +08:00
 huangmiao233

有以下 4 个字典

dict1={'status':'on', 'location':'a'}
dict2={'status':'on', 'location':'b'}
dict3={'status':'off', 'location':'c'}
dict4={'status':'off', 'location':'d'}

有没有什么办法快速得到

result = {'on':['a','b'], 'off':['c','d']}
1809 次点击
所在节点    Python
6 条回复
maichael
2019-05-07 10:20:04 +08:00
把四个字典放在一个数组里,一次遍历判断就搞定了。
j0hnj
2019-05-07 10:25:30 +08:00
from collections import defaultdict

result = defaultdict(set)
for d in [dict1, dict2, dict3, dict4]:
result[d['status']].add(d['location'])
result = {k:list(v) for k,v in result.items()}
huangmiao233
2019-05-07 10:27:13 +08:00
明白了 !!多谢 2 位
cassidyhere
2019-05-07 10:28:03 +08:00
from operator import itemgetter
from itertools import groupby

rows = [dict1, dict2, dict3, dict4]
for status, items in groupby(rows, key=itemgetter('status')):
print(status, [i['location'] for i in items])
huangmiao233
2019-05-07 10:32:53 +08:00
python 还是有很多模块能用的 还是太年轻
xpresslink
2019-05-07 22:34:56 +08:00
@helijia21 根本用不着模块啊,就一句的事儿。
dict1={'status':'on', 'location':'a'}
dict2={'status':'on', 'location':'b'}
dict3={'status':'off', 'location':'c'}
dict4={'status':'off', 'location':'d'}
dicts = [dict1,dict2,dict3,dict4]
result = {}
for d in dicts: result.setdefault(d['status'],[]).append(d['location'])
print(result)
# {'on': ['a', 'b'], 'off': ['c', 'd']}

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

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

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

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

© 2021 V2EX