【发布时间】:2014-12-02 02:41:42
【问题描述】:
我有一个这样的列表的 Python 字典:
d = {'A': [(4, 4, 3), [1, 2, 3, 4, 5]],
'B': [(2, 1, 2), [5, 4, 3, 2, 1]],
'C': [(4, 1, 1), [2, 4, 1, 2, 4]]}
我需要创建一个公式来访问字典的元素,并且对于每个值 [t, l]:
- 计算
t的平均值(我们称之为m); - 从
l抽取随机样本s,替换为长度len(t); - 如果
m大于s的平均值,则将m与s的平均值-True进行比较,否则False; - 重复此过程 10,000 次
- 返回
m大于s平均值的次数百分比。
输出应如下所示:
In [16]: test(d)
Out[16]: {'A': 0.5, 'B': 0.9, 'C': 0.4}
我想我离答案不远了,这就是我尝试过的:
def test(dict):
def mean_diff(dict):
for k, (v0, v1) in dict.iteritems():
m = np.mean(v0) > (np.mean(npr.choice(v1, size=(1, len(v0)), replace=True)))
return ({k: m})
for k, (v0, v1) in dict.iteritems():
bootstrap = np.array([means_diff(dict) for _ in range(10000)])
rank = float(np.sum(bootstrap))/10000
return ({k: rank})
但是,我得到了:
RuntimeError: maximum recursion depth exceeded while calling a Python object
【问题讨论】:
标签: python function recursion dictionary iteration