在python中创建多维列表

时间:2011-09-20 16:05:43

标签: python list

这个问题可能在早些时候提出过(至少是明智的话题),但我仍然无法找到解决我具体问题的方法。基本上,我需要python中的多维数组。这样:

我将能够通过以下方式访问列表中的内容:

contenets[no_of_record][record]. 

所以我有一个像:

这样的文件
101, Mrs. Jones' Math Class, 10100000001, Jones, Barbara, , , , 10100000011, Gutierrez, Kimberly, 2
101, Mrs. Jones' Math Class, 10100000001, Jones, Barbara, , , , 10100000013, Mercado, Toby, 1
101, Mrs. Jones' Math Class, 10100000001, Jones, Barbara, , , , 10100000014, Garcia, Lizzie, 1
101, Mrs. Jones' Math Class, 10100000001, Jones, Barbara, , , , 10100000015, Cruz, Alex, 1

现在我必须维护一个多维数组,其中no_of_record指向行号,记录将是列号。

我想要类似的东西:

contents=[][]

for lines in source_file:
                contents[no_of_records][]=lines.rstrip().split(',')
                print contents[no_of_records]
                no_of_records+=1

我确信上面的代码段在语法上是错误的,我只是想知道我在搜索什么。谢谢你的帮助。

-Sethu

4 个答案:

答案 0 :(得分:4)

从文档的csv示例

你应该做的事情

import csv
rows = []
with open('some.csv', 'rb') as f:
    reader = csv.reader(f)
    for row in reader:
        print row
        rows.append(row)

答案 1 :(得分:3)

如果你真的想要列表,你可以用它来做:

contents = [l.split(',') for l in fh] # fh is a file handle here.

如果您实际使用的是csv文件,则没有充分的理由不使用csv模块。

答案 2 :(得分:1)

使用单个list,但使用list个对象进一步填充。

contents = []
for i, line in enumerate(source_file):
    contents.append(line.rstrip().split(','))
    print contents[i]

看起来你正在解析一个csv文件。我建议改为使用csv模块。

答案 3 :(得分:1)

如果您想为索引使用数字以外的其他内容,您也可以使用dicts,这可能会更好。

contents = []
tmp_rcd = {'classnum': 101, 'classname': "Mrs. Jones' Math Class", ...}
contents.append.tmp.rcd
...
print contents[i]['classname']