2017-08-18 82 views
1

我有一个字典,而值是字符串类型。但我想计算每个键的平均值,而空字符串是缺失值。这里是我的代码,只需要一个小twerk为它工作......出现错误:int()函数的参数必须是字符串或数字,而不是“名单”字典中的字符串和缺失值的平均值(python)

dic = {'E': ['1', '', '3'], 'M': ['2', '', '1']} 
for k,n in dic.items(): 
    k = [0] 
    n = [1] 

D = {k: (int(n)) for k, n in dic.items() if n} 
ave = {k:sum(D)/float(len(D))} if D else '-' 
print ave 

预期输出: {“E”: 2,'M':1.5}

+0

字典的值是**而不是**字符串,它们是字符串列表。如果我正确地理解了你的问题(这个我不确定),你的预期结果是'{'E':2.0,'M':1.5}',对吗? –

+0

是的,字符串列表。 – user8459844

+0

@Ashwini这看起来不像一个笨蛋。 OP显然知道如何迭代字典。 –

回答

0
dic = {'E': ['1', '', '3'], 'M': ['2', '', '1']} 
ave = dict() 
for k in dic: 
    nonempty = [ float(v) for v in dic[k] if v != '' ] 
    ave[k] = sum(nonempty)/len(nonempty) 
print ave