我正在尝试从我正在使用的一些算法中获取一些计数值。你知道吗
以下是一个玩具示例:
def Count():
a = dict(sys=0,dia=0,hr1=0,ox=0,hr2=0,wht=0)
itr = [0]
def C(a=a,itr=itr):
'''closure to sum to a
'''
def b( cnt ):
for k in a:
#a[k] = a.get(k,None) + cnt.get(k,None)
a[k] = a.get(k,0) + cnt.get(k,0)
itr.append(1)
print 'a ', a
return a
return b
c=C()
return c
def get():
return a;
fc=Count()
def toyalgo(fc):
vitals = ['sys', 'dia', 'hr1', 'ox', 'hr2', 'wht']
cc = np.random.randint(0,20,size=6)
cnt = dict(izip( vitals, cc) )
print 'new count ',cnt
fc(cnt)
print 'fc'
toyalgo(fc)
toyalgo(fc)
在多个(+8)调用的输出如下所示:
new count {'wht': 1, 'hr1': 8, 'dia': 18, 'hr2': 13, 'sys': 17, 'ox': 5}
a {'sys': 17, 'wht': 1, 'ox': 5, 'hr1': 8, 'dia': 18, 'hr2': 13}
new count {'wht': 2, 'hr1': 12, 'dia': 12, 'hr2': 19, 'sys': 13, 'ox': 1}
a {'sys': 30, 'wht': 3, 'ox': 6, 'hr1': 20, 'dia': 30, 'hr2': 32}
不幸的是,在实际数据集上运行时,如果没有
TypeError: unsupported operand type(s) for +: 'int' and 'list'
我认为这是由于缺少一个值,所以尝试从None
更改为0
,但没有运气。你知道吗
--get()
只是获取闭包变量a,即计数。(未经测试不确定def get(a=a): return a
是否是正确的方法……)
--return fc(cnt)不走运;尽管我确实看到了它是另一个问题的解决方案,所以也有同样的类型错误。你知道吗
---编辑---
很好的评论!
使用not isinstance()
进行调试时检测到错误。正在通过一个列表!你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐