我在python 2.7中有字典列表。
a =[{'id': 1,'desc': 'smth'}, {'id': 2,'desc': 'smthelse'}, {'id': 1,'desc': 'smthelse2'}, {'id': 1,'desc': 'smthelse3'},....]
我想浏览列表,找到具有相同值的字典-id(例如id = 1)并创建一个新字典
b = [{'id':1, 'desc' : [smth, smthelse2,smthelse3]}, {'id': 2, 'desc': 'smthelse'}]
我希望我足够清楚
非常感谢您的建议
最好将“ desc”值保留在所有列表中,即使它们仅包含单个元素也是如此。这样你可以做
for d in b: print d['id'] for desc in d['desc']: print desc
这也适用于字符串,只返回单个字符,这不是您想要的。
现在,该解决方案为您提供了列表的字典列表:
a =[{'id': 1,'desc': 'smth'},{'id': 2,'desc': 'smthelse'},{'id': 1,'desc': 'smthelse2'},{'id': 1,'desc': 'smthelse3'}] c = {} for d in a: c.setdefault(d['id'], []).append(d['desc']) b = [{'id': k, 'desc': v} for k,v in c.iteritems()]
b 就是现在:
b
[{'desc': ['smth', 'smthelse2', 'smthelse3'], 'id': 1}, {'desc': ['smthelse'], 'id': 2}]