我有一个将分析结果存储到文件中的功能。它需要states_
作为输入,它是字典的字典。关键是仪器,值是一些错误分布。例如,
states_
{'NQH8': {'300=20': 0, '373=71': 0, '373=70': 0, '373=73': 0, '373=72': 0, '373=11': 0, '373=10': 0, '380=1': 0, '380=0': 0, '380=3': 0, '380=2': 0, '380=5': 0, '380=4': 0, '380=7': 0, '380=6': 0, '300=99': 0, '300=2': 0, '300=98': 0, '300=1': 0, '300=3': 0, 'Accepted': 40, '300=5': 0, '300=7': 0, '300=6': 0, '300=9': 0, '300=8': 0, '373=7': 0, '373=6': 0, '373=5': 0, '373=4': 0, '373=3': 0, '373=2': 0, '373=1': 0, '373=0': 0, '373=9': 0, '373=8': 0},
'ESM8': {'300=20': 0, '373=71': 0, '373=70': 0, '373=73': 0, '373=72': 0, '373=11': 0, '373=10': 0, '380=1': 0, '380=0': 0, '380=3': 0, '380=2': 1, '380=5': 0, '380=4': 0, '380=7': 0, '380=6': 0, '300=99': 0, '300=2': 0, '300=98': 0, '300=1': 0, '300=3': 0, 'Accepted': 0, '300=5': 0, '300=7': 0, '300=6': 0, '300=9': 0, '300=8': 0, '373=7': 0, '373=6': 0, '373=5': 0, '373=4': 0, '373=3': 0, '373=2': 0, '373=1': 0, '373=0': 0, '373=9': 0, '373=8': 0}}
在下面的代码片段中,我使用字典理解(即注释行)在错误分发字典中选择一个小集。预期注释行的行为与for循环相同。
for inst in instruments:
# rejects = {k:states_[inst][k] for k in ErrorMsg[errorType].keys()}
for k in ErrorMsg[errorType].keys():
rejects[k] = states_[inst][k]
然而,实际上,它抱怨global name states_ not defined
。
rejects = {k:states_[inst][k] for k in ErrorMsg[errorType].keys()}
*** NameError: global name 'states_' is not defined.
事实上,当我在这里设置断点时,可以显示states_的值,但它无法运行该行。因此,我必须用for循环替换它,然后它才能工作。
有没有人遇到过这个?
我的Python版本是2.7.5。