如何制作计数器的子集?
How to make subset of Counter?
我正在试验 Python 标准库集合。
我有一个东西的计数器
>>> c = Counter('achdnsdsdsdsdklaffaefhaew')
>>> c
Counter({'a': 4,
'c': 1,
'h': 2,
'd': 5,
'n': 1,
's': 4,
'k': 1,
'l': 1,
'f': 3,
'e': 2,
'w': 1})
我现在想要的是以某种方式获取此计数器的子集作为另一个 Counter 对象。就像这样:
>>> new_c = do_subset(c, [d,s,l,e,w])
>>> new_c
Counter({'d': 5,
's': 4,
'l': 1,
'e': 2,
'w': 1})
提前谢谢你。
您可以访问 c
中的每个键并将其值分配给新字典中的相同键。
import collections
c = collections.Counter('achdnsdsdsdsdklaffaefhaew')
def subsetter(c, sub):
out = {}
for x in sub:
out[x] = c[x]
return collections.Counter(out)
subsetter(c, ["d","s","l","e","w"])
产量:
{'d': 5, 'e': 2, 'l': 1, 's': 4, 'w': 1}
您可以简单地构建一个字典并将其传递给 Counter:
from collections import Counter
c = Counter({'a': 4,
'c': 1,
'h': 2,
'd': 5,
'n': 1,
's': 4,
'k': 1,
'l': 1,
'f': 3,
'e': 2,
'w': 1})
def do_subset(counter, lst):
return Counter({k: counter.get(k, 0) for k in lst})
result = do_subset(c, ['d', 's', 'l', 'e', 'w'])
print(result)
输出
Counter({'d': 5, 's': 4, 'e': 2, 'l': 1, 'w': 1})
我正在试验 Python 标准库集合。
我有一个东西的计数器
>>> c = Counter('achdnsdsdsdsdklaffaefhaew')
>>> c
Counter({'a': 4,
'c': 1,
'h': 2,
'd': 5,
'n': 1,
's': 4,
'k': 1,
'l': 1,
'f': 3,
'e': 2,
'w': 1})
我现在想要的是以某种方式获取此计数器的子集作为另一个 Counter 对象。就像这样:
>>> new_c = do_subset(c, [d,s,l,e,w])
>>> new_c
Counter({'d': 5,
's': 4,
'l': 1,
'e': 2,
'w': 1})
提前谢谢你。
您可以访问 c
中的每个键并将其值分配给新字典中的相同键。
import collections
c = collections.Counter('achdnsdsdsdsdklaffaefhaew')
def subsetter(c, sub):
out = {}
for x in sub:
out[x] = c[x]
return collections.Counter(out)
subsetter(c, ["d","s","l","e","w"])
产量:
{'d': 5, 'e': 2, 'l': 1, 's': 4, 'w': 1}
您可以简单地构建一个字典并将其传递给 Counter:
from collections import Counter
c = Counter({'a': 4,
'c': 1,
'h': 2,
'd': 5,
'n': 1,
's': 4,
'k': 1,
'l': 1,
'f': 3,
'e': 2,
'w': 1})
def do_subset(counter, lst):
return Counter({k: counter.get(k, 0) for k in lst})
result = do_subset(c, ['d', 's', 'l', 'e', 'w'])
print(result)
输出
Counter({'d': 5, 's': 4, 'e': 2, 'l': 1, 'w': 1})