字典理解有时不起作用

时间:2018-03-01 16:02:22

标签: python dictionary

我有一个将分析结果存储到文件中的功能。它需要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。

0 个答案:

没有答案