擅长:python、mysql、java
<p>您可以使用正则表达式和<a href="https://docs.python.org/3/reference/expressions.html#generator-expressions" rel="nofollow noreferrer">generator expression</a>来完成此操作:</p>
<h3>代码:</h3>
<pre><code>END_NUMS_RE = re.compile(r'^(\D+)(\d+)$')
dict(END_NUMS_RE.match(x.strip()).groups() for x in data.split(','))
</code></pre>
<h3>测试代码:</h3>
^{pr2}$
<h3>结果:</h3>
^{3}$
<h3>但是!正则表达式:</h3>
<p>因此,对于那些关心使用正则表达式的人:</p>
<p>让我们将regex答案与第二投票率答案进行比较:</p>
<pre><code>import re
END_NUMS_RE = re.compile(r'^(\D+)(\d+)$')
data = "electron1, gamma5, proton43, boson98"
def method1():
return dict(END_NUMS_RE.match(x.strip()).groups()
for x in data.split(','))
def method2():
l = data.split(',')
return {
''.join(
[x for x in item if not x.isdigit()]):
int(''.join([x for x in item if x.isdigit()])) for item in l
}
from timeit import timeit
print(timeit(method1, number=10000))
print(timeit(method2, number=10000))
</code></pre>
<h3>计时结果:</h3>
<pre><code>0.05789754982012146
0.10536237238963242
</code></pre>
<p>regex的回答速度是原来的两倍。在</p>