我有以下两个字典列表:
list_1 = [{'document_id': '5'}, {'document_id': '2'}, {'document_id': '4'}]
list_2 = [{'document_id': '4', 'page_id': '1'}, {'document_id': '5', 'page_id': '2'}, {'document_id': '5', 'page_id': '1'}]
list_1
如果有帮助list_2
,document_id
则是的超集。
我想要
list_2
依据list_1
list_2
基于所述page_id
为每个不同的document_id
因此,我最终要拥有:
new_list_2 = [{'document_id': '5', 'page_id': '1'}, {'document_id': '5', 'page_id': '2'}, {'document_id': '4', 'page_id': '1'}]
我如何有效地做到这一点?
list_1
通过字典理解来创建顺序的映射。
docs = {doc.get('document_id'): n for n, doc in enumerate(list_1)}
# >>> docs
# {'5': 0, '2': 1, '4': 2}
然后使用带有page_id
的排序作为排序键。
list_2.sort(key=lambda r: (docs[r['document_id']], r['page_id']))
>>> list_2
[{'document_id': '5', 'page_id': '1'},
{'document_id': '5', 'page_id': '2'},
{'document_id': '4', 'page_id': '1'}]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句