擅长:python、mysql、java
<p>你有两个直接的选择。一个是标准的查找列表,如Evan的评论所示:</p>
<pre><code>{'guiseppe': 'Joseph', 'joe': 'Joseph', 'joey': 'Joseph', 'joseph': 'Joseph',
'Samuel': 'Samuel', 'sam': 'Samuel', 'samuel': 'Samuel', 'shmuel': 'Samuel'}
</code></pre>
<p>现在,调整它以返回完整的<em>对象</em>,而不是名称。由于您没有指定对象,所以我将假设一个<code>Person</code>类:</p>
^{pr2}$
<p>现在,只需将对象插入查找表:</p>
<pre><code>{'guiseppe': joseph, 'joe': joseph, 'joey': joseph, 'joseph': 'Joseph',
'Samuel': samuel, 'sam': samuel, 'samuel': samuel, 'shmuel': 'Samuel'}
</code></pre>
<p>另一种查找方法是从现有代码中删除额外的循环;使用<code>in</code>运算符:</p>
<pre><code>for canon in name_forms:
for variant in name_forms[canon]:
if txt.lower() in variant:
return canon
</code></pre>
<p>您仍然需要字符串到对象表,但现在它变短了:</p>
<pre><code>{"Joseph": jospeh, "Samuel": samuel}
</code></pre>