我正试图从我正在使用的一些算法中获得一些计数值。
这是一个玩具示例:
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}
不幸的是,当在真实数据集上运行时,如果没有
,则无法通过5次调用TypeError: unsupported operand type(s) for +: 'int' and 'list'
我认为这是因为缺少值,所以我只是试图从None
更改为0
,但没有运气。
任何帮助都很棒!
- get()
只是为了获得闭包变量a,即计数。 (未经测试的不确定也许def get(a=a): return a
是正确的方法......)
- 返回fc(cnt)没有运气;尽管如此,我确实认为这是SO上另一个问题的解决方案,具有相同的TypeError。
---编辑---
好评!
使用not isinstance()
进行调试检测到错误。列表正在通过!