擅长:python、mysql、java
<p>首先,您需要<code>re.escape</code>键,以防它包含句点或类似的内容。除此之外,您还可以采取更直接的方法来构建结果dict:</p>
<pre><code>from collections import defaultdict
def get_index_for_string(string, keys):
res = defaultdict(list)
for key in keys:
for match in re.finditer(re.escape(key), string):
res[match.start()].append(key)
return res
</code></pre>
<p>注意:除了使用<code>defaultdict</code>之外,您还可以使用常规dict并执行<code>res.setdefault(match.start(), []).append(key)</code>,但它看起来并不漂亮。你知道吗</p>