按照特定顺序排序字典列表

0 投票
3 回答
3803 浏览
提问于 2025-04-16 03:15

我正在使用Python 2.6,并且有两个数据存储。查询第一个数据存储时,会返回一个按特定顺序排列的文档ID列表。我使用这些ID在第二个数据存储中一次性查找所有文档,这样会返回一个字典列表(每个文档对应一个字典),但这个列表的顺序和最初的ID列表不一样。现在我需要重新排序这个字典列表,让文档的顺序和第一个列表中的ID顺序一致。有什么好的方法可以做到这一点呢?

3 个回答

1

你可以建立一个单独的字典,把ID和位置对应起来,然后用这个字典来排序文档:

ids = ...
positions = {}
for pos, id in enumerate(ids):
   positions[id] = pos

docs = ...
docs.sort(key=lambda doc: positions[doc['id']])
4

别这样做。

不要把你的“字典列表(每个文档一个,但顺序和原来的列表不一样)”放进一个字典里。

这个新的字典里包含了字典的键值对。

然后按照你原来列表的顺序,去字典里找和它匹配的项。

some_list= query_data_store_1()
some_other_list= query_data_store_2( some_list )

dict_of_dict = dict( (d['key'], d) for d in some_other_list )

for item in some_list:
    other_item = dict_of_dict[ item['key'] ]

    # Now you have item from the first list matching item from the second list.
    # And it's in order by the first list.
0

这里似乎提供了一个最好的(也是通用的)解决方案:在Python中任意重新排序字典列表

撰写回答