定义类似于list.sort
的key
参数的自定义键 * 函数 *,以便在collections.defaultdict
中使用,有什么好方法?
下面是一个使用案例示例:
import collections
class Path(object):
def __init__(self, start, end, *other_features):
self._first = start
self._last = end
self._rest = other_features
def startpoint(self):
return self._first
def endpoint(self):
return self._last
# Maybe it has __eq__ and __hash__, maybe not
paths = [... a list of Path objects ...]
by_endpoint = collections.defaultdict(list)
for p in paths:
by_last_name[p.endpoint()].append(p)
# do stuff that depends on lumping paths with the same endpoint together
我所需要的是一种方法来告诉by_endpoint
使用Path.endpoint
作为key
函数,类似于list.sort
的key
参数,而不必将这个键定义放入Path
类本身(通过__eq__
和__hash__
),因为同样支持“按起点集总”也是明智的。
1条答案
按热度按时间gkl3eglg1#
可能是这样的:
注意,如果key函数不能执行,福尔斯到传入的key的逻辑,这样你仍然可以使用字符串或其他键来访问项目。
现在: