<p>乍一看,您的代码有一个明显的问题-每次通过循环将<code>mydict</code>重置为空dict,并使用以下行:</p>
<pre><code> mydict = dict()
</code></pre>
<p>如果将其移动到循环之前,则可以进一步测试,以确定是否有其他问题需要修复。在</p>
<p>然而,有一种更直接的方法来实现你想要的:</p>
^{pr2}$
<p>这将打开文件<code>puzzle.txt</code>,并将其分配给变量<code>f</code>,然后将文件中的每一行读入字符串变量<code>line</code>,去掉所有空白(包括末尾的换行符),将得到的字符串转换成一个字符列表,最后将这些列表收集到另一个列表中,并将其分配给变量<code>puzzle</code>。最后,因为所有这些都是在<code>with</code>语句中完成的,所以文件将自动关闭。在</p>
<p>上面的代码中有两个重要的Python概念:</p>
<ul>
<li><a href="http://docs.python.org/2/tutorial/inputoutput.html#methods-of-file-objects" rel="nofollow">using the with statement, and iterating over the lines of a file</a></li>
<li><a href="http://docs.python.org/2/tutorial/datastructures.html#list-comprehensions" rel="nofollow">list comprehensions</a></li>
</ul>
<p>如果在pprint模块中使用<a href="http://docs.python.org/2/library/pprint.html#pprint.pprint" rel="nofollow">pprint</a>函数,可以更清楚地看到此代码的结果:</p>
<pre><code>>>> from pprint import pprint
>>> pprint(puzzle)
[['H', 'G', 'A', 'M', 'O', 'N', 'I', 'H', 'R', 'A'],
['A', 'O', 'M', 'O', 'K', 'A', 'W', 'O', 'N', 'S'],
['N', 'F', 'R', 'O', 'L', 'B', 'O', 'B', 'D', 'N'],
['A', 'R', 'F', 'S', 'I', 'H', 'C', 'A', 'G', 'E'],
['L', 'N', 'I', 'E', 'E', 'W', 'O', 'N', 'O', 'K'],
['G', 'O', 'L', 'F', 'U', 'N', 'D', 'T', 'H', 'C'],
['K', 'O', 'C', 'A', 'T', 'A', 'O', 'H', 'B', 'I'],
['A', 'M', 'R', 'E', 'R', 'C', 'G', 'A', 'N', 'H'],
['S', 'L', 'G', 'F', 'A', 'M', 'A', 'L', 'L', 'C'],
['A', 'L', 'L', 'I', 'G', 'A', 'T', 'O', 'R', 'X']]
</code></pre>
<p>。。。你可以完全按照你在问题中提出的方式来访问一个单独的角色:</p>
<pre><code>>>> puzzle[2][3]
'O'
</code></pre>