gpt4 book ai didi

python - 按多个字段对目录结果进行排序

转载 作者:太空狗 更新时间:2023-10-30 01:59:41 32 4
gpt4 key购买 nike

我需要按多个字段对目录结果进行排序。

在我的例子中,首先按年排序,然后按月排序。年和月字段包含在我的自定义内容类型中(分别为 item_publication_yearitem_publication_month)。

但是,我没有得到我想要的结果。年和月根本没有排序。它们应按降序排列,即 2006、2005、2004 等。

下面是我的代码:

def queryItemRepository(self):
"""
Perform a search returning items matching the criteria
"""

query = {}

portal_catalog = getToolByName(self, 'portal_catalog')
folder_path = '/'.join( self.context.getPhysicalPath() )

query['portal_type'] = "MyContentType"
query['path'] = {'query' : folder_path, 'depth' : 2 }

results = portal_catalog.searchResults(query)

# convert the results to a python list so we can use the sort function
results = list(results)

results.sort(lambda x, y : cmp((y['item_publication_year'], y['item_publication_year']),
(x['item_publication_month'], x['item_publication_month'])
))


return results

有人愿意帮忙吗?

最佳答案

更好的选择是使用 key 参数进行排序:

results.sort(key=lambda b: (b.item_publication_year, b.item_publication_month))

您还可以使用 sorted() built-in function而不是使用 list();它会为你返回一个排序列表,对于 Python 来说,首先对结果调用 list,然后排序,这与调用 sorted 的工作量相同:

results = portal_catalog.searchResults(query)
results = sorted(results, key=lambda b: (b.item_publication_year, b.item_publication_month))

当然,item_publication_yearitem_publication_month 都需要出现在目录元数据中。

关于python - 按多个字段对目录结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12495813/

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