我正在编写一个程序,使用python查找给定字符串中出现最大奇数次的字符。但是,如果两个或多个字符出现最大的奇数次,我将无法在列表中追加字符。
使用的输入:AAAbbccc
我遇到错误:
回溯(最近通话最近): 在第18行中输入文件“ ./prog.py” AttributeError:“ str”对象没有属性“ append”
inputString = input()
dict = {}
for i in inputString:
if i in dict:
dict[i] += 1
else:
dict[i] = 1
print(dict)
max = -1
lst = []
for i in dict:
if(dict[i]%2!=0 and max<=dict[i]):
if(max == dict[i]):
lst.append(i)
else:
max = dict[i]
lst = i
print(lst)
答案 0 :(得分:1)
您的代码存在一些问题:
d
或dict_
代替dict
。同上max
。max
(固定为-1
)将始终为<= dict[i]
,因为计数始终为>= 1
。lst
定义为列表,然后为其分配一个字符串。要简单得多,请使用collections.Counter
,计算最大值,然后将max
与自定义函数一起使用:
from collections import Counter
inputString = input()
c = Counter(inputString)
print(c)
maxval = max(c.values())
def max_logic(x):
cond1 = x[1] % 2
cond2 = x[1] - maxval
return cond1, cond2
key, val = max(c.items(), key=max_logic)
示例运行:
print(key, val)
thisisateststring
Counter({'t': 4, 's': 4, 'i': 3, 'h': 1, 'a': 1, 'e': 1, 'r': 1, 'n': 1, 'g': 1})
i 3
该解决方案假定您的字符串中存在有效的奇数 。如果不是这样,则需要应用特殊处理,则需要添加其他逻辑。我将其保留为练习。