擅长:python、mysql、java
<ol>
<li><p>您需要反转列表理解中的两个<code>for</code>循环(<code>for</code>循环需要以与编写命令式代码相同的顺序出现)</p>
</li>
<li><p>在<code>.strip('\(\)')</code>中不需要反斜杠</p>
</li>
<li><p><code>for language,proficiency in lp.split(' ')</code>将尝试<em>将<code>lp.split(' ')</code>的每个项解压到元组<code>(language,proficiency)</code>,因此,将<code>lp.split(' ')</code>包装到一个单元素列表中以实现您想要的:</p>
</li>
</ol>
<pre><code>dict((l,p.strip('()')) for lp in text.split(', ') for l,p in [lp.split(' ')])
</code></pre>
<blockquote>
<p>{'english': 'fluently', 'spanish': 'poorly'}</p>
</blockquote>
<p>以上内容可以写成<code>dict</code>理解:</p>
<pre><code>{l: p.strip('()') for lp in text.split(', ') for l,p in [lp.split(' ')]}
</code></pre>
<p>读起来好一点</p>
<p>使用<code>re</code>的替代方法:</p>
<pre><code>import re
dict(re.findall(r'(\w+) \((\w+)\),?', text))
</code></pre>
<blockquote>
<p>{'english': 'fluently', 'spanish': 'poorly'}</p>
</blockquote>