【问题标题】:How do I keep Counter() from splitting up my strings?如何防止 Counter() 拆分我的字符串?
【发布时间】:2020-02-05 20:22:12
【问题描述】:

所以我正在使用集合中的 Counter() 方法并尝试从数据框中读取列以获取特定国家/地区的计数。问题是 Counter() 将读入的字符串拆分为单个字母。例如我正在运行类似这样的东西:

from collections import Counter 

country_counter = Counter()

my_list = ['US', 'US', 'Mex', 'Can', 'US', 'Can']

for x in my_list:
    country_counter.update(x)

这给出了以下输出:

Counter({'U': 3, 'S': 3, 'M': 1, 'e': 1, 'x': 1, 'C': 2, 'a': 2, 'n': 2})

但我正在努力:

Counter({'US': 3, 'Can': 2, 'Mex': 1})

关于如何纠正这个问题的任何帮助?我应该使用 Counter() 还是有更有效的方法?

【问题讨论】:

  • country_counter.update(x) 替换为country_counter.update((x,))
  • 您可以完全跳过循环:countery_counter.update(my_list)

标签: python list counter


【解决方案1】:

您可以简单地将列表作为输入提供给Counter。当前您正在做的是遍历每个字符串并将其作为输入提供,因此如果您提供输入,计数器会考虑单个字母。

>>> from collections import Counter 
>>> my_list = ['US', 'US', 'Mex', 'Can', 'US', 'Can']
>>> c=Counter(my_list)
>>> c
Counter({'US': 3, 'Can': 2, 'Mex': 1})

【讨论】:

  • 谢谢!我还认为我在尝试通过循环将 df 列传递到计数器时遇到了麻烦。在创建一个空列表并附加该列的项目后使用您的提示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-24
相关资源
最近更新 更多