我有一些字符串集,我想提取所有子字符串及其频率超过1个字符的子字符串
ForEach-Object
这应该返回:
example_string = "coco crunch is nice nicenice"
这是一种对子字符串的暴力破解。
欢迎引用。谢谢。
答案 0 :(得分:1)
尝试使用此字典理解功能:
print({(k[:len(k)//2] if k.count(k[:len(k)//2]) > 1 and len(k[:len(k)//2]) > 1 else k): (example_string.count(k[:len(k)//2]) if k.count(k[:len(k)//2]) > 1 and len(k[:len(k)//2]) > 1 else example_string.count(k)) for k in example_string.split()})
输出:
{'co': 2, 'crunch': 1, 'is': 1, 'nice': 3}
如果您还希望包含原始子字符串:
from collections import Counter
print({**Counter(example_string.split()), **{(k[:len(k)//2] if k.count(k[:len(k)//2]) > 1 and len(k[:len(k)//2]) > 1 else k): (example_string.count(k[:len(k)//2]) if k.count(k[:len(k)//2]) > 1 and len(k[:len(k)//2]) > 1 else example_string.count(k)) for k in example_string.split()}})
输出:
{'coco': 1, 'crunch': 1, 'is': 1, 'nice': 3, 'nicenice': 1, 'co': 2}