为了账号安全,请及时绑定邮箱和手机立即绑定

如何制作计数器的子集?

如何制作计数器的子集?

白衣染霜花 2021-08-14 16:52:34
我正在试验 Python 标准库集合。我有一个计数器作为>>> c = Counter('achdnsdsdsdsdklaffaefhaew')>>> cCounter({'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_cCounter({'d': 5,         's': 4,         'l': 1,         'e': 2,         'w': 1})先感谢您。
查看完整描述

2 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

您可以简单地构建一个字典并将其传递给 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})


查看完整回答
反对 回复 2021-08-14
?
皈依舞

TA贡献1851条经验 获得超3个赞

您可以访问每个键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}


查看完整回答
反对 回复 2021-08-14
  • 2 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信