【发布时间】:2021-04-17 23:17:42
【问题描述】:
假设我有以下内容:data = ['ABCD', 'ABABC', 'BCAABCD']
我正在尝试创建一个函数,它使用 Counter 获取三个 argv,一个用于数据,第二个用于必须考虑此模式的序列数量的最小比例,第三个是最大模式长度。
一个工作函数应该给我以下:
>>> check(data, 0.50, 2)
Counter({'A': 3, 'AB': 3, 'B': 3, 'BC': 3, 'C': 3, 'CD': 2, 'D': 2})
>>> check(data, 0.34, 4)
Counter({'A': 3, 'AB': 3, 'ABC': 3, 'ABCD': 2, 'B': 3, 'BC': 3, 'BCD': 2, 'C': 3, 'CD': 2, 'D': 2})
我真的迷失了这个东西,我只知道如何获得两个或多个字母的组合是这样的:
Counter(combinations(data[0], 2)) & Counter(combinations(data[1], 2)) & Counter(combinations(data[2], 2))
而且我还知道如何获取数据所有元素中字母的总和:
Counter(data[0]) + Counter(data[1]) + Counter(data[2])
(奇怪的是,我无法像我想做的那样使用列表理解来做这个总和,因为一个错误说我不能在 'str' 和 'int' 之间做 '+'
如果你们不能给我完整的代码,没问题,我只需要一些关于如何开始整个事情并获得逻辑的指导。
祝阅读我整篇文章的人度过愉快的一天:)
【问题讨论】:
标签: python collections sequence counter itertools