gpt4 book ai didi

python - 根据另一个字典对字典列表进行排序

转载 作者:行者123 更新时间:2023-12-01 00:03:16 24 4
gpt4 key购买 nike

我有这两个字典列表:

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_1list_2 的超集(就 document_id 而言)(如果这有帮助的话)。

我想要

  1. 根据list_1list_2进行排序
  2. 然后根据每个不同 document_idpage_idlist_2 进行排序

因此,我想最终得到这个:

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'}]

关于python - 根据另一个字典对字典列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60174213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com