Python 使用for循环计数字符串

Python 使用for循环计数字符串,python,Python,我不知道我做错了什么。当我输入一个字符串时,它返回字母,但只给出1的出现。有人能告诉我我做错了什么吗 def printDictionary(a): c=sorted(a) for char in c: print(char, c.count(char)) PS我是python新手在传递字符串时似乎可以工作: >>> printDictionary('abcaab') a 3 a 3 a 3 b 2 b 2 c 1 因此,我假设您正在将字典传

我不知道我做错了什么。当我输入一个字符串时,它返回字母,但只给出1的出现。有人能告诉我我做错了什么吗

def printDictionary(a):
    c=sorted(a)
    for char in c:
        print(char, c.count(char))

PS我是python新手

在传递字符串时似乎可以工作:

>>> printDictionary('abcaab')
a 3
a 3
a 3
b 2
b 2
c 1
因此,我假设您正在将字典传递给
printdirectionary()
(似乎只符合逻辑)

线路

c=sorted(a)
将字典
a
的排序键分配给
c
。由于字典键是唯一的,所以字典中只能有该键的一个实例,因此
c.count(char)
始终返回1

>>> printDictionary(dict(a=1,b=10,zz=22,ABC=1033))
ABC 1
a 1
b 1
zz 1

假设你有这本字典:

{'a': ['ant', 'abacus'], 'b': ['bear']}
您希望获得以下输出:

a 2
b 1
然后使用此功能:

def printDictionary(dictionary):
    keys = sorted(dictionary)
    for key in keys:
        print(key, len(dictionary[key]))

你能提供一些你将使用的输入和预期的输出吗?当我为“苹果”运行这个时,我得到('a',1)('e',1)('l',1)('p',2)('p',2)。这其中有什么你不喜欢的?作为旁注,虽然自己学习如何做是值得的(特别是如果这是一个类赋值),但在实际代码中,你可能只想使用
c=collections.Counter(a)
,然后
对于char,按排序(c.items()):print(char,count)
。不清楚你传递了什么,你能提供示例输入和预期输出吗?我试图得到一个输出,没有元组、列表和字典,但是,感谢所有的输入。