【发布时间】:2018-11-05 09:24:51
【问题描述】:
我正在从事一个个人项目,该项目计算文本中提到的名称实例。我知道我可以用collections.Counter() 做到这一点,但我不确定如何有效地考虑别名。
例如,假设我要计算的名字之一是"Tim",但我也想计算他的任何昵称,例如"Timmy" 和"Timster"。
我有一些字符串说,"Oh Tim is going to the party?"、"Yeah, my boy Timmy, wouldn't miss it, he loves to party!"、"Whoa, the Timster himself is going? Count me in!"
我想把它们都算作"Tim" 这样的变量。我知道我可以简单地单独计算它们,然后将计数加在一起。但我觉得有更好的方法可以做到这一点。
I.E.我希望我的代码看起来更像。
names = {
'Tim':{'Tim', 'Timmy', 'Timster'},
... other names here.}
# add any occurrence of Tim names to Tim and other occurrences of other names to their main name.
相对于类似的东西
total_tim = Counter(tim) + Counter(timmy) + Counter(timster), etc..
每个名字。有谁知道我会怎么做?
【问题讨论】:
-
total_tim = Counter(tim) + Counter(timmy) + Counter(timster), etc..更直接,并且可能比添加间接更有效。您也许可以将这种方法包装到模仿您首选的方法中? -
@ReblochonMasque 你确定吗?我打算跟踪几十个名字,感觉手动将它们全部加在一起感觉很草率。
-
无论如何,您必须输入这些别名组,不是吗?例如,如果您将其包装在
class AliasCounter中;该类可以采用text Counter,并按别名对其进行分组;不过,您仍然需要提供这些别名。 -
@ChristianDean 对不起,我不太确定如何做到这一点,而不必像我试图避免的那样手动将所有别名添加在一起。能举个例子吗?
-
我已经有了解决方案。 (我可以简单地使用 Counter() 单独添加每个昵称,然后为每个名字说 Tim = Tim_Counter + Timmy_Counter + Timster_Counter 等等,但是在处理几十个名字时会占用很多行。)我是希望找到一个解决方案,可以只说“计算这个字典中所有昵称的出现次数,对于字典中的每个名字。”
标签: python python-3.x collections count counter