我想在字符串中出现字符,我得到了这段代码:
string = "Foo Fighters"
def conteo(string):
copia = ''
for i in string:
if i not in copia:
copia = copia + i
conteo = [0]*len(copia)
for i in string:
if i in copia:
conteo[copia.index(i)] = conteo[copia.index(i)] + 1
out = ['0']*2*len(copia)
for i in range(len(copia)):
out[2*i] = copia[i]
out[2*i + 1] = conteo[i]
return (out)
我希望返回类似:['f', 2, 'o', 2, '', 1, 'i', 1, 'g', 1, 'h', 1, 't', 1, 'e', 1, 'r', 1, 's', 1]
我该怎么办?不使用python库
谢谢
答案 0 :(得分:4)
根据您希望获得此信息的原因,一种方法可能是使用Counter
:
from collections import Counter
print(Counter("Foo Fighters"))
当然,要创建与请求完全相同的输出,也可以使用itertools:
from collections import Counter
from itertools import chain
c = Counter("Foo Fighters")
output = list(chain.from_iterable(c.items()))
>> ['F', 2, 'o', 2, ' ', 1, 'i', 1, 'g', 1, 'h', 1, 't', 1, 'e', 1, 'r', 1, 's', 1]
答案 1 :(得分:4)
使用Python Counter(标准库的一部分):
>>> str = 'foo fighters'
>>> from collections import Counter
>>> counter = Counter(str)
Counter({'f': 2, 'o': 2, ' ': 1, 'e': 1, 'g': 1, 'i': 1, 'h': 1, 's': 1, 'r': 1, 't': 1})
>>> counter['f']
2
>>>
答案 2 :(得分:0)
目前尚不清楚您是否想要对当前的尝试或pythonic解决方案进行批评。以下是输出是字典的一种方式。
from collections import Counter
mystr = "Foo Fighters"
c = Counter(mystr)
<强>结果强>
Counter({' ': 1,
'F': 2,
'e': 1,
'g': 1,
'h': 1,
'i': 1,
'o': 2,
'r': 1,
's': 1,
't': 1})
以列表形式输出
我故意不在这个列表中组合元组,因为在绝对必要之前保持结构是个好主意。将这些组合成一个字符串列表是一项微不足道的任务。
list(c.items())
# [('F', 2),
# ('o', 2),
# (' ', 1),
# ('i', 1),
# ('g', 1),
# ('h', 1),
# ('t', 1),
# ('e', 1),
# ('r', 1),
# ('s', 1)]