我列出的清单列表如下:删除重复的列表项从列表的列表清单
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