Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Create函数计算字符串中字符的出现次数_Python_Python 3.x_Python 2.7 - Fatal编程技术网

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库的一部分。要重现它并不困难。但这样做的目的是什么?