我列出的清單列表如下:刪除重複的列表項從列表的列表清單
All_Data= [[['Chemical Name', 'Average Ret. Time', 'Maximum Area'],
['1-hexanol', 5.10, 2544937.0], ['1-hexanol', 8.69, 3798101.0],
['1-hexanol', 5.54, 2470679.0], ['2-propanone-1-hydroxy-', 1.97, 227607.0],
['acetic acid', 1.962, 227607.0], ['acetic acid', 1.75, 38359423.0],
['acetoin', 2.32, 478054.0]],
[['Chemical Name', 'Average Ret. Time', 'Maximum Area'], ['1-pentanol', 3.00, 24864.0],
['2-heptanone', 5.54, 10027158.0], ['2-pentanone', 2.10, 858204.0],
['2-pentanone', 2.03, 858204.0], ['2-pentanone', 2.037, 858204.0],
['2-pentanone', 1.97, 858204.0], ['pentane, 2,3,3-trimethyl-', 2.84, 1775913.0],
['pentane, 2,3,4-trimethyl-', 2.75, 807020.0]],
[['Chemical Name', 'Average Ret. Time', 'Maximum Area'], ['.alpha.-pinene', 7.00, 8190.0],
['.alpha.-pinene', 8.729, 21582890.0], ['ethyl hexanoate', 9.47, 71863418.0],
['nonanal', 13.93, 10301295.0], ['pentanoic acid, ethyl ester', 5.88, 19659678.0],
['propanoic acid, ethyl ester', 2.30, 8107638.0]]]
所以列表包含3個層次:有一個名爲「All_Data名單的三個主要子列表「並且每個子列表在其他子列表中都包含一組數據。 我想獨立比較三個主要子列表中的子列表,並查看兩個子列表中的第一項是否匹配,我想刪除一個子列表並保留一個。例如,在第一數據「1己醇」重複三次,我想保持只有一個子表:
['1-hexanol', 5.10, 2544937.0]
,並刪除其他兩個:
['1-hexanol', 8.69, 3798101.0], ['1-hexanol', 5.54, 2470679.0]
我試着下面的代碼,但它會給出錯誤:「TypeError:'int'object is not subscriptable」。
代碼:
for i in All_Data:
for j in range(0, len(i)):
for k in range(1, len(i)):
if i[j[0]] == i[k[0]]:
del i[k[0]]
請幫我在這。
親切的問候, 阿里
謝謝你提示這麼多剪枝回覆。我試過了,問題解決了。但我仍然得到重複未刪除。 我在'if'語句之後說過,'del k',但它不會刪除重複項。當我使用'del I [k]'時,它會給出一個錯誤「IndexError:列表索引超出範圍」。 我對這個範圍函數有點困惑。 我們可以在不使用'range'的情況下解決這個問題嗎? – Hashmi
(1)這是一個單獨的問題,需要單獨發佈問題; (2)閱讀發佈指南:我們需要發佈我們可以剪切和粘貼的代碼,這將重現問題。包含*完整*錯誤消息。 – Prune
爲了檢查我正在嘗試的觀點,我按照我的建議更改了代碼,並將** All_Data **設置爲列表的列表。我沒有得到你引用的錯誤。請發佈可重現您現在看到的問題的最小代碼 - 作爲單獨的問題。 – Prune