2015-11-19 124 views
3

我想創建一個2D列表,我不斷得到相同的錯誤「TypeError:列表索引必須是整數,而不是元組」我不明白爲什麼,或者如何正確使用2D列表。2d列表不能正常工作

Total = 0 
server = xmlrpclib.Server(url); 
mainview = server.download_list("", "main") 
info = [[]] 
info[0,0] = hostname 
info[0,1] = time 
info[0,2] = complete 
info[0,3] = Errors 
for t in mainview: 
    Total += 1 
    print server.d.get_hash(t) 
    info[Total, 0] = server.d.get_hash(t) 
    info[Total, 1] = server.d.get_name(t) 
    info[Total, 2] = server.d.complete(t) 
    info[Total, 3] = server.d.message(t) 

    if server.d.complete(t) == 1: 
    Complete += 1 
    else: 
    Incomplete += 1 
    if (str(server.d.message(t)).__len__() >= 3): 
    Error += 1 
info[0,2] = Complete 
info[0,3] = Error 

一切正常,除了試圖處理信息。

+0

Python中沒有這樣的「2d列表」。你有什麼是一個列表,其內容也列表。如果你想想這是什麼意思,你會明白爲什麼這不起作用。 – BrenBarn

回答

4

你的錯誤是在訪問2D-列表,修改:

info[0,0] = hostname 
info[0,1] = time 
info[0,2] = complete 
info[0,3] = Errors 

到:

info[0].append(hostname) 
info[0].append(time) 
info[0].append(complete) 
info[0].append(Errors) 

同去info[Total, 0]

+0

這仍然會導致錯誤,因爲列表是空的開始,即列表索引超出範圍錯誤 –

+0

@RNar感謝您的收穫。糾正。 – alfasin

1

創建info的方式,是隻包含一個元素的列表,即一個空列表。當處理列表,你必須解決諸如

info[0][0] = hostname 

有關初始化嵌套的項目,你必須創建由例如列表的列表

# create list of lists of 0, size is 10x10 
info = [[0]*10 for i in range(10)] 

當使用numpy陣列,你可以像你一樣解決的元素。

「列表清單」的一個優點是並非所有「2D列表」條目都具有相同的數據類型!

-1
info = [[] for i in range(4)] # create 4 empty lists inside a list 
info[0][0].append(hostname) 
info[0][1].append(time) 
info[0][2].append(complete) 
info[0][3].append(Errors) 

您需要先創建2d數組。

+0

那不是你如何調用列表中的元素 –