2015-04-27 129 views
1

我有一个日期键的字典。每个日期都有一个项目的键值对和一个天数列表。为嵌套字典列表中的平均值添加键

我想为每个日期键添加平均指标,同时删除6以上的异常值。我的代码很接近,但会产生一些棘手的结果。

import numpy as np 
d = {} 
d['1/2/15'] = {'Project 1' : [1,4,7], 'Project 2' : [1,5, 11]} 

for key, value in d.iteritems(): 
    avg = np.mean([x for x in d[key]['Project 1'] if x < 6]) 
    d[key][str(value) + ' Average'] = avg 

print d 

预期输出:

{'Project 1' : [1,4,7], 'Project 1 Average' : 2.5, 'Project 2' : [1,5,7], 'Project 2 Average' : 3.0 } 

回答

1
import numpy as np 
d = {} 
d['1/2/15'] = {'Project 1' : [1,4,7], 'Project 2' : [1,5, 11]} 

for key, value in d.iteritems(): 
     d_avg = {} 
     for k, v in value.iteritems(): 
      avg = np.mean([x for x in d[key][k] if x < 6]) 
      d_avg[str(k) + ' Average'] = avg 
     d[key].update(d_avg) 

print d 

输出

{'1/2/15': {'Project 2 Average': 3.0, 'Project 2': [1, 5, 11], 'Project 1 Average': 2.5, 'Project 1': [1, 4, 7]}} 

问题是,同时通过它遍历字典不能被更新。

+0

这是一个有趣的解决方案,但是你在关键命名中硬编码k,所以它只计算Project 2的平均值。有没有办法让这两个项目都做到这一点? – user2242044

+0

刚用'k'代替它,我现在看到问题了,我会仔细检查代码。 –

+0

对不起,我没跟着你。 – user2242044