【发布时间】:2017-11-29 19:51:59
【问题描述】:
我正在尝试根据 categoryName 键的相同值对字典进行分组。
列表字典的来源
data = [{'category_id': 1,
'categoryName': 'Civil',
'author': 'x',
'title': 'Stone'},
{'category_id': 1,
'categoryName': 'Civil',
'author': 'y',
'title': 'House'},
{'category_id': 2,
'categoryName': 'Programming',
'author': 'x',
'title': 'Python'},
{'category_id': 2,
'categoryName': 'Programming',
'author': 'y',
'title': 'Java'}]
我的目标输出
new_data = {'Civil':[{'Title':'Stone', 'author':'x'},
{'Title':'House', 'author':'y'}],
'Programming':[{'Title':'Python', 'author':'x'},
{'Title':'Java', 'author':'y'}]}
到目前为止我的尝试:
建立类别名称列表
categories = set([i['categoryName'] for i in data])
然后用
构建新的字典d = {}
for cat in categories:
d[cat] = []
for book in data:
if book['category_name'] == cat:
d[cat].append(book)
它有效。但我认为这不是正确或优雅的方式。
寻找更多解决方案。谢谢!
【问题讨论】:
-
在提问之前你自己尝试过做什么?
-
正如@depperm 所说,首先向我们展示您的代码,但也请查看
defaultdict,它会在这里真正为您提供帮助。 -
@depperm 嗨,抱歉,忘记添加我自己的尝试。我已经编辑了这个问题。谢谢!
标签: python dictionary