How to count members of a set in a string in Python?

Viewed 7223

I have a list of letters and letter clusters, like this:

['x', 'str', 'a', 'pr']

I have a string that I need to know how many total occurrences of any member of the list are in it:

stripe = 1, rope = 0,, rprpraxp = 4, etc

Now I can loop over the members of the list counting occurrences of each member and then total them, like this:

sublist = ['x', 'str', 'a', 'pr']
string = "rprpraxp"
inst = 0
for member in sublist:
    inst = inst + string.count(member)
print(inst)

However I am wondering if I am missing a shorter, simpler, more intuitive and more Pythonic way of counting the members of a set of items in another string, something like:

inst = string.multicount(['x', 'str', 'a', 'pr'])

Anything like this exist?

Thanks.

2 Answers

I would use map and sum:

sublist = ['x', 'str', 'a', 'pr']
string = "rprpraxp"
print(sum(map(string.count, sublist)))
>>> S = "rprpraxp"
>>> L = ['x', 'str', 'a', 'pr']
>>> sum(S.count(e) for e in L if e in S)
4
Related