Python Create函数计算字符串中字符的出现次数
我想得到字符串中字符的出现情况,我得到以下代码:Python Create函数计算字符串中字符的出现次数,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我想得到字符串中字符的出现情况,我得到以下代码: 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: cont
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库
谢谢根据您需要此信息的原因,一种方法可以是使用
计数器
:
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]
现在还不清楚你是想对你目前的尝试提出批评,还是想提出一个可行的解决方案。下面是一种输出为字典的方法
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})
输出为列表
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)]
使用Python计数器(标准库的一部分):
我想你有一个输入错误:在
'o',2,
之后有一个空字符串;它应该是空白(“”
)?缺少括号()
)较短的版本:列表(chain.from_iterable(c.items())
)!如果我真的想一想的话,这是很有道理的。我会把它删掉。(我想从技术上讲,list(chain(*c.items())
更短,但我觉得不那么容易理解)我想他希望输出为列表。是的,我希望输出一个列表,但是否还有创建函数而不是使用库的方法?集合。计数器
是标准python库的一部分。要重现它并不困难。但这样做的目的是什么?