我使用的是Python 2.6,我有两个数据存储。查询第一个返回特定顺序的文档ID列表。我使用这些ID在第二个数据存储中一次查找所有文档,这些ID返回一个字典列表(每个文档一个),但与原始列表的顺序不同。我现在需要重新排序这个词典列表,以便文档按照其ID在第一个列表中的顺序排列。这样做的最佳方式是什么?
答案 0 :(得分: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.
答案 1 :(得分:1)
您可以构建一个单独的字典映射ID到位置并使用它来订购文档:
ids = ...
positions = {}
for pos, id in enumerate(ids):
positions[id] = pos
docs = ...
docs.sort(key=lambda doc: positions[doc['id']])
答案 2 :(得分:0)
这里似乎给出了最佳(和一般)解决方案:reordering list of dicts arbitrarily in python