擅长:python、mysql、java
<p>只需阅读一个列表,其中包含每个首字母的键:</p>
<pre><code>with open(ur_file) as f:
d={}
for word in f:
d.setdefault(word[0].lower(), []).append(word)
</code></pre>
<p>那么你就有了这样一句话:</p>
^{pr2}$
<p>然后您可以编写一个简单的函数来查找您的单词:</p>
<pre><code>>>> def f(s): return s in d[s[0]]
...
>>> f('art')
False
>>> f('aaoo')
True
</code></pre>
<p>或者,如果您知道您的文件中有所有26个字母,您可以将所有26个字母的开头设置为空列表:</p>
<pre><code>d={k:list() for k in 'abcdefghijklmnopqrstuvwxyz'}
with open(ur_file) as f:
for word in f:
d[word[0].lower()].append(word)
</code></pre>
<p>通过“.intersection”,您可能会想到<a href="https://docs.python.org/2/library/stdtypes.html#set" rel="nofollow">sets</a>:</p>
<pre><code>>>> set(['a', 'aaoo', 'aloor', 'azur']).intersection(set(['art']))
set([])
>>> set(['a', 'aaoo', 'aloor', 'azur']).intersection(set(['aaoo']))
set(['aaoo'])
</code></pre>
<p>但是,无论您是否有list、dict、set、string,<code>in</code>关键字是测试单个元素成员资格的最佳方法:</p>
<pre><code>>>> 'art' in set(['a', 'aaoo', 'aloor', 'azur'])
False
>>> 'azur' in set(['a', 'aaoo', 'aloor', 'azur'])
True
</code></pre>