Martix of Counts of Regex Hits Over a List of Strings I have:

A dataframe with Identifiers (TermId) and Search Terms (SearchTerm).
A list of text strings (MyText).  This likely would be a column (series) in a dataframe.

I for every string in MyText I want to get a count of hits for every regex SearchTerm, producing a table of counts.  This is a scaled down example.  I'd have 10,000 of Mytext and 100s of SearchTerms.  I am newer to Python (from R) and would like to know where can I optimize the code to make it more performant?  I'm open to what ever feedback people have to offer on all aspects of the code.
## Dependencies
import re
import pandas as pd

## Data
MyText = ['I saw xx.yy and also xx.yyy', 'FireFly* this is xx_yy there', 'I xx$YY', 'I see x.yy now .NET', 'now xx.yyxx.yyxx.yy']
 
MyDictionary = pd.DataFrame({
    'TermId': ['SK_{}'.format(x) for x in list(range(0, 6))],
    'SearchTerm': ['xx[.]yy', '[.]NET', 'A[+]', 'FireFly[*]', 'NetFlix[$]',  'Adobe[*]']
})


## Convert Search Term to Compiled Regex Object
MyDictionary['Regexes'] = [re.compile(s) for s in MyDictionary['SearchTerm']]

## List comprehension to double loop over the regexes &amp;  
## elements of MyText to count hits
out = {id: [len(regex.findall(s)) for s in MyText] for regex, id in zip(MyDictionary['Regexes'], MyDictionary['TermId'])}
out = pd.DataFrame(out)
out['MyText'] = MyText

## Results
print(out)
print(MyDictionary)

Which yields:
   SK_0  SK_1  SK_2  SK_3  SK_4  SK_5                        MyText
0     2     0     0     0     0     0   I saw xx.yy and also xx.yyy
1     0     0     0     1     0     0  FireFly* this is xx_yy there
2     0     0     0     0     0     0                       I xx$YY
3     0     1     0     0     0     0           I see x.yy now .NET
4     3     0     0     0     0     0           now xx.yyxx.yyxx.yy
An idiomatic approach would be to put MyText in a dataframe (if not already) and assign() the results of str.count().
I'd also suggest using an actual dict for the regex mapping. It's not strictly necessary, but the syntax is just cleaner given that this use case aligns with dict. (Here I created terms from MyDictionary just for continuity with the existing code.)
terms = dict(zip(MyDictionary.TermId, MyDictionary.SearchTerm))
df = pd.DataFrame({'MyText': MyText})

df = df.assign(**{key: df.MyText.str.count(val) for key, val in terms.items()})

#                          MyText  SK_0  SK_1  SK_2  SK_3  SK_4  SK_5
# 0   I saw xx.yy and also xx.yyy     2     0     0     0     0     0
# 1  FireFly* this is xx_yy there     0     0     0     1     0     0
# 2                       I xx$YY     0     0     0     0     0     0
# 3           I see x.yy now .NET     0     1     0     0     0     0
# 4           now xx.yyxx.yyxx.yy     3     0     0     0     0     0
```