如何解决Python将字典列表与等效字段组合在一起
我有以下形式的词典列表:
[
{
'author': 'John Doe','book': {
'name': 'Book 1','year': 1999
}
},{
'author': 'Jane Doe','book': {
'name': 'Book 2','year': 2003
}
},{
'author': 'John Doe','book': {
'name': 'Book 3','year': 2001
}
},...
]
我想合并具有等效'author'
字段的对象以创建书籍列表,因此结果如下:
[
{
'author': 'John Doe','book': [{
'name': 'Book 1','year': 1999
},{
'name:' 'Book 3','year': 2001
}]
},'book': [{ # a single book should still be a list
'name': 'Book 2','year': 2003
}]
},...
]
我可以通过遍历并与同一作者一起存储每个对象来做到这一点,但是有没有更快/更好的方法呢?
解决方法
使用作者姓名作为密钥填充新的dict
。这样会遍历列表一次。
authors = {}
for author in lst:
name = author["author"]
if name not in authors:
authors[name] = {"author": name,"books": []}
authors[name]["books"].append(author["book"])
您可以将其保留为字典,也可以使用list(authors.values())
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。