python - 无法在 python 列表中追加元素
问题描述
我正在编写一个程序,以使用 python 在给定字符串中查找出现最大奇数次的字符。但是,如果两个或更多字符出现最大奇数次,我无法将字符附加到列表中。
使用的输入:AAAbbccc
我得到的错误:
Traceback(最近一次调用最后一次):文件“./prog.py”,第 18 行,在 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)
解决方案
您的代码存在一些问题:
- 不要在内置函数之后命名变量(即使作为示例)。使用
d
ordict_
代替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
该解决方案假定您的字符串中确实存在有效的奇数。如果没有,并且您需要应用特殊处理,则需要添加额外的逻辑。我把它留作练习。
推荐阅读
- mongodb - 如何在 mongodb 中使用查找和 $push
- python - 如何将一条消息发送给多个标记的用户?(discord.py)
- c - 为什么作弊引擎可以访问内存位置而我自己的程序却不能?
- php - 在php上上传图像时出现未定义的数组键错误
- python-3.x - Xlabel 没有出现
- flutter - Flutter 应用程序不会在 Android 上验证应用程序链接
- c# - c#/unity json 错误,并希望使用 Unity JsonUtility 或 litJson 在 JsonObject 中检索 jsonObject
- flutter - 扑动中的可点击单元格
- javascript - 如何比较嵌套对象/数组结构中的特定键值?
- excel - 多个工作簿使用时保持打开相同的表单