Python 计算字符串中所有字符的出现次数,但如果字符重复,则只计算一次
注意:请确保这不是重复的,我正在尝试找到一种线性方式。 我试图将填充ascii字母的字符串转换为填充ascii字母的字符串 例如:Python 计算字符串中所有字符的出现次数,但如果字符重复,则只计算一次,python,string,generator,Python,String,Generator,注意:请确保这不是重复的,我正在尝试找到一种线性方式。 我试图将填充ascii字母的字符串转换为填充ascii字母的字符串 例如: string1='abc' 要将其转换为包含ascii字母的字符串,我只需使用一行命令: string2=[string1.string1中l的计数(l)] 这将输出: [1,1,1] 但是如果在string1中有多个重复的字符,它看起来会不同 例如:string1='aaabbccc' 并对其进行改造: string2=[string1.string1中l的计数
string1='abc'
要将其转换为包含ascii字母的字符串,我只需使用一行命令:
string2=[string1.string1中l的计数(l)]
这将输出:
[1,1,1]
但是如果在string1中有多个重复的字符,它看起来会不同 例如:
string1='aaabbccc'
并对其进行改造:
string2=[string1.string1中l的计数(l)]
而产出将是:
[3,3,3,3,3,3,3,3,3]
如你们所见,字符重复出现,我不知道如何制作一个只打印一次单个字母的生成器 例如: 而不是:
[3,3,3,3,3,3,3,3,3]
有没有办法用单线发电机输出
[3,3,3]
使用设置:
>>> [string1.count(l) for l in set(string1)]
[3, 3, 3]
Set将字符串转换为一组不同的字符:例如aabc
和abbc
,但acb
也将转换为{'a','b','c'}
这是您查找的输出,但您不知道哪个3指向哪个字符,因此最后最好使用建议的计数器方法使用设置:
>>> [string1.count(l) for l in set(string1)]
[3, 3, 3]
Set将字符串转换为一组不同的字符:例如aabc
和abbc
,但acb
也将转换为{'a','b','c'}
这是您查找的输出,但您不知道哪个3指向哪个字符,因此最终您最好使用建议的计数器方法您可以使用OrderedCounter
在一行中完成
>>> from collections import Counter, OrderedDict
>>> class OrderedCounter(Counter, OrderedDict):
... pass
...
>>> OrderedCounter('aaabbbccc').values()
[3, 3, 3]
您可以使用OrderedCounter
在一行中完成此操作
>>> from collections import Counter, OrderedDict
>>> class OrderedCounter(Counter, OrderedDict):
... pass
...
>>> OrderedCounter('aaabbbccc').values()
[3, 3, 3]
使用集合。计数器
:
>>> from collections import Counter
>>> Counter('aaabbbccc')
Counter({'a': 3, 'b': 3, 'c': 3})
通过使用string.ascii\u小写
迭代计数器,可以轻松地将计数作为排序列表获取:
>>> import string
>>> c = Counter('aaabbbccc')
>>> [c[l] for l in string.ascii_lowercase]
[3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
使用集合。计数器
:
>>> from collections import Counter
>>> Counter('aaabbbccc')
Counter({'a': 3, 'b': 3, 'c': 3})
通过使用string.ascii\u小写
迭代计数器,可以轻松地将计数作为排序列表获取:
>>> import string
>>> c = Counter('aaabbbccc')
>>> [c[l] for l in string.ascii_lowercase]
[3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
如果重复字符彼此不相邻,aabaab
的预期输出是什么?请使用collections.Counter
或dict
。在你的问题中,我没有看到任何生成器。Counter('aaabbbccc')
->Counter({'b':3,'a':3,'c':3})
如果重复字符彼此不相邻,那么aabaab
的预期输出是什么?使用集合。Counter
或dict
。在你的问题中,我没有看到任何生成器。Counter('aaabbbccc')
->Counter({'b':3,'a':3,'c':3})
谢谢,但我正在尝试将它更容易地转换为字符串类型,有没有简单的方法?@ShellRox你正在尝试将什么转换为字符串类型?我不明白。在这种情况下,您希望结果为'333'
吗?@MoinuddinQuadri我正在尝试不使用数组形式输出数字,很抱歉我没有在问题中提到。@ShellRox check@Uriel Eli您是真正的读心术者谢谢,但我正在尝试更轻松地将其转换为字符串类型,有简单的方法吗?@ShellRox你想把什么变成字符串类型?我不明白。在这种情况下,您希望结果为'333'
吗?@MoinuddinQuadri我正在尝试不使用数组形式输出数字,很抱歉我没有在问题中提到。@ShellRox check@Uriel Eli您是真正的读心人Hello,您知道如何将此输出轻松地转换为字符串吗?没有括号,谢谢!您好,您知道如何将此输出轻松地转换为字符串吗?没有括号,谢谢!