需要在if语句中计算给定字符串的出现次数
在我的函数里,有一个条件判断是要检查一个字符串里是否有某个列表中的字符串出现超过一次。
举个例子:
list = ['a','b']
我需要检查一个字符串里是否有这两个字符中的任意一个出现超过一次,如果没有,就会继续检查下一个条件。
s = 'aloha'
字符串s会通过这个条件判断,因为b不在s里。
s = 'abcd'
字符串s会失败这个条件判断,因为a和b都在s里。
如果还不够清楚,这里有更多例子。
s = 'aaab'
这个会失败条件判断,然后继续往下。
s = 'aaloh'
这个也会失败。
我的条件判断是:
if s.count('a') == 1 or s.count('b') == 1:
这个条件判断不管用。
我想问的是,有没有办法在不提前使用循环的情况下检查这个?
1 个回答
2
你需要用一个循环,但其实可以用一行代码搞定。
if sum(char in s for char in list) > 1:
如果你想找某个字符的特定数量,并且有个阈值的话,可以把你的字符列表放到一个字典里,比如 d = {'a': 1, 'b': 4}
。
if sum(s.count(char) >= count for char, count in d.items) > THRESHOLD:
更新
提问者评论说他想要一个
只有在字符串中没有同时出现'a'和'b'的情况下,才对这个字符串做某些操作。字符串中只能有'a'或'b'其中之一,而且只能出现一次。
因为提问者最开始想把'a'和'b'推广到一系列字符 list
,我理解他的意思是他想要一个表达式,如果字符串 s
中恰好出现了字符列表 list
中的一个元素一次,就返回 True
。
sum(s.count(char) for char in list) <= 1
在提问者的简单例子中,list = ['a', 'b']
。