代码之家  ›  专栏  ›  技术社区  ›  keramat

计数器()减法

  •  1
  • keramat  · 技术社区  · 7 年前

    我有两个列表,我想从neg中减去列表pos中元素的频率。因此:

    neg = [x for x in all[:800000]]
    pos = [x for x in all[800000:]]
    count_pos = Counter(pos)
    count_neg = Counter(neg)
    positivity = count_pos.subtract(count_neg)
    print(positivity)
    

    我希望得到结果,但代码返回:

    None
    

    有什么问题?

    2 回复  |  直到 7 年前
        1
  •  3
  •   bunji    7 年前

    正如对该问题的评论所指出的那样 subtract 方法应用于其对象,并返回None。要获得您想要的行为,您可以使用 - 像这样的操作员:

    positivity = count_pos - count_neg
    

    或者你可以先复制你的 count_pos 计数器并使用其减法:

    positivity = Counter(count_pos)
    positivity.subtract(count_neg)
    

    在这两种情况下,最终都会得到一个变量 positivity 包含count\u pos和count\u neg之间的差异

        2
  •  2
  •   Muku    7 年前

    只需将相应的行替换为

    positivity = count_pos - count_neg