我遇到了一个范围问题lambda
功能。我可以成功地将 foo 输出到标准输出,但在使用时出现错误max()
包括一个lambda
- 请参阅下面的简化代码...
总而言之,我正在尝试找到嵌套键的最大值budget
在未知数量的一阶密钥内。
(Pdb) foo = self.some_method() # some_method() returns a dict, printed in the next step
(Pdb) pp foo
{'1': {'count': 1,
'extra_data': {'activity-count': 1,
'budget': 0,
[...MORE KEY-VALUE PAIRS HERE...]
'version': 1},
[...LOTS MORE KEY-VALUE PAIRS HERE...]
'elements_total': defaultdict(<type 'int'>, {'result': 1, 'another_key': 2}),
'extra_year_data': defaultdict(<function <lambda> at 0x10e05bd70>, {})},
'2': {'count': 1,
'extra_data': {'activity-count': 1,
'budget': 3,
[...MORE KEY-VALUE PAIRS HERE...]
'version': 1},
[...LOTS MORE KEY-VALUE PAIRS HERE...]
'elements_total': defaultdict(<type 'int'>, {'result': 1, 'another_key': 2}),
'extra_year_data': defaultdict(<function <lambda> at 0x10e05bd70>, {})}}
(Pdb) max(foo, key=lambda x: foo[x]['extra_data']['budget'])
*** NameError: global name 'foo' is not defined
总而言之,我正在尝试使用max(foo, key=lambda x: foo[x]['extra_data']['budget'])
查找嵌套键的最大值budget
在未知数量的一阶密钥内。
在这种情况下的预期结果可能是2
作为价值foo['2']['extra_data']['budget'] = 3
vs. foo['1']['extra_data']['budget'] = 0
.
该错误是否与某些(不相关的)键具有以下事实有关:defaultdict
在他们里面吗?