Python:计算字典中特定的出现次数
Python: count specific occurrences in a dictionary
假设我有这样的字典:
d={
'0101001':(1,0.0),
'0101002':(2,0.0),
'0101003':(3,0.5),
'0103001':(1,0.0),
'0103002':(2,0.9),
'0103003':(3,0.4),
'0105001':(1,0.0),
'0105002':(2,1.0),
'0105003':(3,0.0)}
考虑到每个键的前四位构成了"slot"个元素的标识(如'0101'、'0103'、'0105'),我该如何计算出现的次数每个插槽的 0.0
?
预期的结果是这样的命令:
result={
'0101': 2,
'0103': 1,
'0105': 2}
抱歉无法提供我的尝试,因为我真的不知道该怎么做。
使用 Counter,如果值是您要查找的值,请添加键的前四位数字:
from collections import Counter
counts = Counter()
for key, value in d.items():
if value[1] == 0.0:
counts[key[:4]] += 1
print counts
您可以使用 defaultdict
:
from _collections import defaultdict
res = defaultdict(int)
for k in d:
if d[k][1] == 0.0:
res[k[:4]] += 1
print(dict(res))
当您执行 +=1
时,如果键不存在,它会使用值 0
创建它,然后执行操作。
假设我有这样的字典:
d={
'0101001':(1,0.0),
'0101002':(2,0.0),
'0101003':(3,0.5),
'0103001':(1,0.0),
'0103002':(2,0.9),
'0103003':(3,0.4),
'0105001':(1,0.0),
'0105002':(2,1.0),
'0105003':(3,0.0)}
考虑到每个键的前四位构成了"slot"个元素的标识(如'0101'、'0103'、'0105'),我该如何计算出现的次数每个插槽的 0.0
?
预期的结果是这样的命令:
result={
'0101': 2,
'0103': 1,
'0105': 2}
抱歉无法提供我的尝试,因为我真的不知道该怎么做。
使用 Counter,如果值是您要查找的值,请添加键的前四位数字:
from collections import Counter
counts = Counter()
for key, value in d.items():
if value[1] == 0.0:
counts[key[:4]] += 1
print counts
您可以使用 defaultdict
:
from _collections import defaultdict
res = defaultdict(int)
for k in d:
if d[k][1] == 0.0:
res[k[:4]] += 1
print(dict(res))
当您执行 +=1
时,如果键不存在,它会使用值 0
创建它,然后执行操作。