计算字典中相对于另一个值的值

时间:2016-02-25 17:41:31

标签: python dictionary count

我有一个类似下面的python字典:

{'Jason': {'A': 200, 'B': 'NaN', 'C': 34, 'D': 'NaN', 'E': True},
 'John': {'A': 250, 'B': '34', 'C':98, 'D': 59, 'E': False},
 'Steve': {'A': 230, 'B': '45', 'C':'NaN', 'D': 67, 'E': False},
 'Louis': {'A': 220, 'B': '37', 'C':'NaN', 'D': 'Nan', 'E': True},
 ....
}

我想计算每个值中'NaN'的数量,并使用值'NaN'的{​​{1}}数返回该计数。

所以我想创建一个这样的字典:

'E': True

我有这个代码,它返回一个计数为{'A': {'NaN': 0, 'E': 0}, 'B': {'NaN': 1, 'E': 1}, 'C': {'NaN': 2, 'E': 1}, 'D': {'NaN': 2, 'E': 2}}

的字典
NaN

如何将NaNs = {} for k,v in dict.iteritems(): for i in v: if v[i] == 'NaN': NaNs[i]=0 for k,v in dict.iteritems(): for i in v: if v[i] == 'NaN': NaNs[i]+=1 print NaN 的计数添加到其中?

1 个答案:

答案 0 :(得分:-1)

好的,为什么不试试这个:

dict = {'Jason': {'A': 200, 'B': 'NaN', 'C': 34, 'D': 'NaN', 'E': True},
 'John': {'A': 250, 'B': '34', 'C':98, 'D': 59, 'E': False},
 'Steve': {'A': 230, 'B': '45', 'C':'NaN', 'D': 67, 'E': False},
 'Louis': {'A': 220, 'B': '37', 'C':'NaN', 'D': 'Nan', 'E': True},
 }

NaNs = {}

for k,v in dict.iteritems(): 
    for i in v:
        if i != 'E':
            NaNs[i]={'NaN': 0, 'E': 0}
for k,v in dict.iteritems():
    for i in v:
        if str(v[i]).lower() == 'nan':
            NaNs[i]['NaN']+=1
            if v['E'] == True:
                NaNs[i]['E']+=1

print NaNs

我不应该调用变量dictNaNs,但我尝试尽可能少地更改代码。