我有一个看起来像这样的defaultdict:
dict1 = defaultdict(lambda: defaultdict(int))
Run Code Online (Sandbox Code Playgroud)
问题是,我不能用cPickle来腌制它.我在这里找到的解决方案之一是使用模块级函数而不是lambda.我的问题是,什么是模块级功能?如何在cPickle中使用字典?
我正在研究项目euler问题14,作为第一次尝试,我掀起了这个强力解决方案:
def collatz(n, memo={1: [1]}):
if n not in memo:
memo[n] = [n] + collatz(3 * n + 1 if n % 2 else n // 2)
return memo[n]
def p014():
return max(xrange(1, 10**6), key=lambda n: len(collatz(n)))
Run Code Online (Sandbox Code Playgroud)
我的问题是关于lambda,我通常不愿意使用它们,但在这种情况下我不知道有什么优雅的方法可以避免它.functools链接两个callables 有什么内容或其他东西,或者我缺少任何其他简洁的替代品?