1 回答
TA贡献1833条经验 获得超4个赞
我在这里找到了答案,他提供了一个通用的解决方案,可以将属性作为参数传入。关键是使用lambda函数定义密钥。
我的代码现在如下所示。请注意输入检查以验证 (1) 列表不为空以及 (2) 感兴趣的属性是否确实属于str可以使用casefold().
def sort_hits_by_attribute(hits, attribute, backwards=False):
"""Takes a lits of hits and sorts them by some attribute.
For instance, group duplicate relation hits together by sorting
on full_statement.
"""
if hits:
if isinstance(attrgetter(attribute)(hits[0]), str):
return sorted(hits,
key = lambda A: attrgetter(attribute)(A).casefold(),
reverse = backwards)
else:
return sorted(hits,
key = attrgetter(attribute),
reverse = backwards)
我没有将此问题标记为重复,因为引用的问题的最喜欢的答案不是特别适合这种情况的答案。
添加回答
举报