如何根据另一个具有关键字的列表对字典列表进行排序?

Fazal S

我有一些ID,如下所示:

req_ids=['964','123','534','645','876','222']

我从另一个这样的服务器得到响应,而不是按照任何特定的顺序进行:

res_result = [{'id':'123', 'name':'Sachin'},
              {'id':'534', 'name':'Vipin'},
              {'id':'222', 'name':'Ram'},
              {'id':'645', 'name':'Anoop'},
              {'id':'964', 'name':'Sani'},
              {'id':'876', 'name':'John'}]

我需要获得res_result与req_ids相同的请求顺序,

    [{'id':'964', 'name':'Sani'},
     {'id':'123', 'name':'Sachin'},
     {'id':'534', 'name':'Vipin'},
     {'id':'645', 'name':'Anoop'},
     {'id':'876', 'name':'John'},
     {'id':'222', 'name':'Ram'}]

如果可能的话,如何使用内置的python函数来执行此操作,而不是编写自己的循环来执行此逻辑?

马丁·彼得斯(Martijn Pieters)

如果必须排序,请将键映射为整数,然后使用该映射进行排序:

id_to_pos = {key: i for i, key in enumerate(req_ids)}
sorted(res_result, key=lambda d: id_to_pos[d['id']])

演示:

>>> from pprint import pprint
>>> req_ids = ['964', '123', '534', '645', '876', '222']
>>> res_result = [{'id':'123', 'name':'Sachin'},
...               {'id':'534', 'name':'Vipin'},
...               {'id':'222', 'name':'Ram'},
...               {'id':'645', 'name':'Anoop'},
...               {'id':'964', 'name':'Sani'},
...               {'id':'876', 'name':'John'}]
>>> id_to_pos = {key: i for i, key in enumerate(req_ids)}
>>> sorted(res_result, key=lambda d: id_to_pos[d['id']])
[{'id': '964', 'name': 'Sani'}, {'id': '123', 'name': 'Sachin'}, {'id': '534', 'name': 'Vipin'}, {'id': '645', 'name': 'Anoop'}, {'id': '876', 'name': 'John'}, {'id': '222', 'name': 'Ram'}]
>>> pprint(_)
[{'id': '964', 'name': 'Sani'},
 {'id': '123', 'name': 'Sachin'},
 {'id': '534', 'name': 'Vipin'},
 {'id': '645', 'name': 'Anoop'},
 {'id': '876', 'name': 'John'},
 {'id': '222', 'name': 'Ram'}]

但是,您可以避免完全排序,因为您已经具有正确的顺序,只需要从id映射到字典(O(N)),然后以正确的顺序拉出字典(仍为O(N)):

id_to_dict = {d['id']: d for d in res_result}
[id_to_dict[id] for id in req_ids]

演示:

>>> id_to_dict = {d['id']: d for d in res_result}
>>> [id_to_dict[id] for id in req_ids]
[{'id': '964', 'name': 'Sani'}, {'id': '123', 'name': 'Sachin'}, {'id': '534', 'name': 'Vipin'}, {'id': '645', 'name': 'Anoop'}, {'id': '876', 'name': 'John'}, {'id': '222', 'name': 'Ram'}]
>>> pprint(_)
[{'id': '964', 'name': 'Sani'},
 {'id': '123', 'name': 'Sachin'},
 {'id': '534', 'name': 'Vipin'},
 {'id': '645', 'name': 'Anoop'},
 {'id': '876', 'name': 'John'},
 {'id': '222', 'name': 'Ram'}]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何根据另一个具有关键字的列表对字典列表进行排序?

来自分类Dev

根据另一个列表对列表进行排序

来自分类Dev

根据另一个列表对列表进行排序

来自分类Dev

如何根据另一个活动的可排序列表对列表进行重新排序?

来自分类Dev

如何根据另一个活动的可排序列表对列表进行重新排序?

来自分类Dev

如何使用与另一个列表的比较来对列表中的字典进行排序

来自分类Dev

Python:如何根据另一个列表对列表进行排序

来自分类Dev

如何根据另一个列表对列表进行排序?Python

来自分类Dev

如何根据另一个列表对列表进行排序?Python

来自分类Dev

如何使用Java Comparator接口参照具有ID的另一个列表对对象列表进行排序

来自分类Dev

根据具有相同项目但顺序不同的另一个列表对具有重复项的列表进行排序

来自分类Dev

Python根据另一个列表对一个列表进行排序

来自分类Dev

Scala根据另一个列表中的值对一个列表进行排序

来自分类Dev

使用另一个字典列表中的键对字典列表进行排序

来自分类Dev

根据另一个排序列表在python中对列表进行排序

来自分类Dev

根据另一个排序的嵌套列表python对嵌套列表进行排序

来自分类Dev

根据另一个列表的排序索引对列表进行排序

来自分类Dev

将一个字典关键字与另一个字典值进行比较,然后创建一个新的字典

来自分类Dev

Java-在另一个字符串列表中搜索关键字列表

来自分类Dev

如果关键字在另一个列表中使用 Ramda 匹配,则过滤字符串列表

来自分类Dev

根据另一个数组对一个列表进行排序

来自分类Dev

根据另一个列表的内容对列表进行排序

来自分类Dev

根据另一个列表值对列表的索引值进行排序

来自分类Dev

根据R中另一个列表的顺序对列表进行排序

来自分类Dev

根据另一个列表值对列表的索引值进行排序

来自分类Dev

使用DSU根据另一个列表对列表进行排序

来自分类Dev

用于根据另一个部分列表的顺序对列表进行排序的算法

来自分类Dev

Linq:根据另一个列表对列表进行排序

来自分类Dev

根据另一个列表对不同的列表进行排序?

Related 相关文章

  1. 1

    如何根据另一个具有关键字的列表对字典列表进行排序?

  2. 2

    根据另一个列表对列表进行排序

  3. 3

    根据另一个列表对列表进行排序

  4. 4

    如何根据另一个活动的可排序列表对列表进行重新排序?

  5. 5

    如何根据另一个活动的可排序列表对列表进行重新排序?

  6. 6

    如何使用与另一个列表的比较来对列表中的字典进行排序

  7. 7

    Python:如何根据另一个列表对列表进行排序

  8. 8

    如何根据另一个列表对列表进行排序?Python

  9. 9

    如何根据另一个列表对列表进行排序?Python

  10. 10

    如何使用Java Comparator接口参照具有ID的另一个列表对对象列表进行排序

  11. 11

    根据具有相同项目但顺序不同的另一个列表对具有重复项的列表进行排序

  12. 12

    Python根据另一个列表对一个列表进行排序

  13. 13

    Scala根据另一个列表中的值对一个列表进行排序

  14. 14

    使用另一个字典列表中的键对字典列表进行排序

  15. 15

    根据另一个排序列表在python中对列表进行排序

  16. 16

    根据另一个排序的嵌套列表python对嵌套列表进行排序

  17. 17

    根据另一个列表的排序索引对列表进行排序

  18. 18

    将一个字典关键字与另一个字典值进行比较,然后创建一个新的字典

  19. 19

    Java-在另一个字符串列表中搜索关键字列表

  20. 20

    如果关键字在另一个列表中使用 Ramda 匹配,则过滤字符串列表

  21. 21

    根据另一个数组对一个列表进行排序

  22. 22

    根据另一个列表的内容对列表进行排序

  23. 23

    根据另一个列表值对列表的索引值进行排序

  24. 24

    根据R中另一个列表的顺序对列表进行排序

  25. 25

    根据另一个列表值对列表的索引值进行排序

  26. 26

    使用DSU根据另一个列表对列表进行排序

  27. 27

    用于根据另一个部分列表的顺序对列表进行排序的算法

  28. 28

    Linq:根据另一个列表对列表进行排序

  29. 29

    根据另一个列表对不同的列表进行排序?

热门标签

归档