【发布时间】:2017-02-06 16:48:53
【问题描述】:
注意:请确保这不是重复的,我正在尝试找到一种班轮方式。
我正在尝试将用 ascii 字母填充的字符串转换为用 ascii 字母填充的字符串。
例如:
string1 = 'abc'.
要将其转换为充满 ascii 字母的字符串,我只需使用一行命令:
string2 = [string1.count(l) for l in string1]
这会输出:
[1, 1, 1]
但是如果我在string1中有多个重复的字符,它看起来会有所不同。
例如:string1 = 'aaabbbccc'
并对其进行改造:
string2 = [string1.count(l) for l in string1]
输出将是:
[3, 3, 3, 3, 3, 3, 3, 3, 3]
如您所见,字符出现是重复的,我不知道如何制作一个仅打印单个字母出现一次的生成器。
例如:
代替:
[3, 3, 3, 3, 3, 3, 3, 3, 3]
有没有办法用单行生成器输出这个?
[3, 3, 3]
【问题讨论】:
-
aabaab的预期输出是什么,其中重复字符不相邻? -
使用
collections.Counter或dict。我在您的问题中没有看到任何生成器。 -
Counter('aaabbbccc')->Counter({'b': 3, 'a': 3, 'c': 3})