-4

我有以下列表(列表):

[[abc-kr, 0, 4, -0.031]
[kkg-kg, 0, 6, -0.03]
[art-m, 1, 20, 0.036]
[abc-kg, 0, 4, -0.023]]

如果第一项的第一部分相同,我想创建另一个列表并删除列表,因此只有 List 中的第一个或最后一个列表应该是新列表的一部分。如果包含较低值的项目保留在列表 2 中会更好。

作为一个起点,我一直在尝试这样做:

finalList = []
for line in List:
item = line.split("-")
if item[0] not in finalList:
    finalList.append(line)

我认为这应该可行,但它没有,所以我在想是否有人可以指出我正确的方向?

4

2 回答 2

3

就像是:

data = [['abc-kr', 0, 4, -0.031],
['kkg-kg', 0, 6, -0.03],
['art-m', 1, 20, 0.036],
['abc-kg', 0, 4, -0.023]]

new_data = {el[0].partition('-')[0]:el for el in data}.values()
于 2013-08-25T13:03:21.603 回答
1

您需要维护一个单独的数组,其中包含每个项目的“第一部分”,仅当项目的第一部分不属于该数组时才会添加到该数组中,并针对该数组进行检查第一部分,而不是针对 finalList。换句话说,

finalList = []
firstParts = []
for line in List:
    item = line[0].split("-")
    print item[0]
    if item[0] not in firstParts:
            firstParts.append(item[0])
            finalList.append(line)
于 2013-08-25T13:10:15.003 回答