需要计算if语句中给定字符串的出现次数

时间:2014-03-18 20:07:41

标签: python if-statement

所以在我的函数中,我的一个if语句是字符串在列表中没有多于1次出现的字符串。

例如:

list = ['a','b']

我需要检查字符串中是否包含多个这两个字符,否则它将转到下一个if语句。

s = 'aloha'

将传递if语句,因为b不在s中。

s = 'abcd'

s应该使if语句失败,因为a和b都在s中。

如果它不够清楚,可以举出更多例子。

s = 'aaab'

这将使if语句失败并继续前进。

s = 'aaloh'

这也将失败

我的if语句是:

if s.count('a') == 1 or s.count('b') == 1:

此if语句不起作用

我的问题是,有没有办法在不事先进行for循环的情况下检查这个?

1 个答案:

答案 0 :(得分:2)

你需要一个for循环,但你仍然可以一行。

if sum(char in s for char in list) > 1:

如果您想要查找具有某个阈值的特定字符的特定数字,请将您的字符列表添加到dict d = {'a': 1, 'b': 4}中。

if sum(s.count(char) >= count for char, count in d.items) > THRESHOLD:

更新

OP评论说他想要一个

  

一个函数,当且仅当该字符串不具有' a'和' b'在字符串中。它只能有两个而不是两个,也只有一个出现。

因为OP的原始帖子想要推广' a'和' b'对于一系列字符list,我解释他的意思是他想要一个表达式True表示字符串s当且仅当s恰好出现一次正好是一个字符列表list的一个元素。

sum(s.count(char) for char in list) <= 1

在OP的简单示例中,list = ['a', 'b']