我正在上 python 类(class),但没有 python 经验。导师只教文档,拒绝给出代码示例。我了解 C++,但我对 Python 感到非常沮丧,因为我基本上是在自学。
我想打开一个文本文件,每行包含一串随机字符。例如,长度可以是 8、10、15 或 20 个字符。它必须是灵活的。文本文件中可以有未指定数量的字符串(行)。
文本文件可能如下所示:
HGAMONIHRA
AOMOKAWONS
NFROLBOBDN
ARFSIHCAGE
LNIEEWONOK
GOLFUNDTHC
KOCATAOHBI
AMRERCGANH
SLGFAMALLC
ALLIGATORX
我只是想弄清楚如何将每个字符放入类似数组的结构中,以便我可以像二维数组一样访问它 --> 例如我的数组 [2][3]。
我用字典练习只是为了测试行为。我认为我可以使用带有嵌套 for 循环的字典,然后使用元组作为键并将字符串中解析的 char 作为值传递。我在想这可能行得通,但是当我尝试使字典只用一行时,我的打印语句只给我一个键和一个值,而不是列表。我真的很困惑。我知道这很痛苦,但有人可以简单地教我吗? python 在我嘴里留下了难闻的味道。
这是我对一个文本文件的一行的测试代码:
count = 0
text = open("puzzle.txt")
line = text.readline()
for i in line: #this is probably the problem
mydict = dict()
mydict.update({count:line[count-1]}) #was hoping to make many keys and values.
count += 1
print mydict.values() #want to see there are multiple dict values, each as a char.
print count #just checking to see what count value was
有人可以教我吗,因为我的老师不会,而且我真的很想学习。
最佳答案
你的代码乍一看有一个明显的问题 - 你每次通过循环都将 mydict
重置为一个空的字典,你的行:
mydict = dict()
如果您将其移动到紧接在循环之前,您可以进一步测试以查看是否还有其他问题需要修复。
但是,有一种更直接的方法可以实现您想要的:
>>> with open("puzzle.txt") as f:
... puzzle = [list(line.strip()) for line in f]
这将打开您的文件 puzzle.txt
并将其分配给变量 f
,然后将文件中的每一行读入一个字符串变量 line
,去除所有空格(包括末尾的换行符),将生成的字符串转换为字符列表,最后将这些列表中的每一个收集到另一个列表中,并将其分配给变量 puzzle
。最后,因为所有这些都是在 with
语句中完成的,所以文件会自动关闭。
上面的代码中有几个重要的 Python 概念:
如果使用 pprint 可以更清楚地看到这段代码的结果pprint模块中的函数:
>>> 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']]
...您可以完全按照您在问题中提出的那样访问单个角色:
>>> puzzle[2][3]
'O'
关于python - 二维数组结构python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14805466/