我正在尝试计算列表中每个字符串重复的次数,但它不断给我KeyError:
def gono(l):
f={}
for h in l:
if(f.get(f[h])):
f[h] += 1
else:
f[h]=1
return f
Error content :
KeyError Traceback (most recent call last)
<ipython-input-68-e02904625299> in <module>
23 f[h]=1
24 return f
---> 25 v=gono(h)
26 v
27
<ipython-input-68-e02904625299> in gono(l)
18 f={}
19 for h in l:
---> 20 if(f.get(f[h])):
21 f[h] += 1
22 else:
KeyError: 'CLOSED'
列表是: ['关闭', '待付款', '完成', '关闭', '完成', '完成', '完成', “处理中”, '待付款', 'PENDING_PAYMENT']
答案 0 :(得分:1)
只需使用Counter
:
from collections import Counter
def gono(l):
return Counter(l)
示例结果:
>>> gono(['CLOSED', 'PENDING_PAYMENT', 'COMPLETE', 'CLOSED', 'COMPLETE', 'COMPLETE', 'COMPLETE', 'PROCESSING', 'PENDING_PAYMENT', 'PENDING_PAYMENT'])
Counter({'COMPLETE': 4, 'PENDING_PAYMENT': 3, 'CLOSED': 2, 'PROCESSING': 1})
答案 1 :(得分:0)
我认为这个问题不属于“数据科学”,这更多是一个python编码问题。无论如何,当您首先调用该函数时,字典似乎为空。在这种情况下如何调用f [h]而不会出现键错误?
答案 2 :(得分:0)
为什么不使用
mylist= ['CLOSED', 'PENDING_PAYMENT', 'COMPLETE', 'CLOSED', 'COMPLETE', 'COMPLETE', 'COMPLETE', 'PROCESSING', 'PENDING_PAYMENT', 'PENDING_PAYMENT']
mylist.count("CLOSED")