当第一项在Python中重复时,仅保留列表中的最后一个值

时间:2017-06-16 08:54:05

标签: python list duplicates

当列表的第一个值与列表中的另一个项目重复时,我想删除列表列表中的项目。

假设我有这个清单:

[['A', 'Value 1', 'Value 2'],['B', 'Value 3', 'Value 4'],['A', 'Value 5', 'Value 6']]

我只想将最后一个列表保留为值A作为第一个索引,如下所示:

[['B', 'Value 3', 'Value 4'],['A', 'Value 5', 'Value 6']]

4 个答案:

答案 0 :(得分:6)

你可以用词典理解来做到这一点;因为通过迭代值列表来构建一个字典,所以你总是会得到最后一个副本。然后,您可以简单地获取字典的值。

original = [['A', 'Value 1', 'Value 2'],['B', 'Value 3', 'Value 4'],['A', 'Value 5', 'Value 6']]
d = {elem[0]: elem for elem in original}
result = list(d.values())

答案 1 :(得分:1)

使用itertools.groupby()功能:

import itertools
l = [['A', 'Value 1', 'Value 2'],['B', 'Value 3', 'Value 4'],['A', 'Value 5', 'Value 6']]
result = [list(g)[-1] for k,g in itertools.groupby(sorted(l), key=lambda x: x[0])]

print(result)

输出:

[['A', 'Value 5', 'Value 6'], ['B', 'Value 3', 'Value 4']]

答案 2 :(得分:0)

    .iconLabel {
  @extend .label-5;
  padding: 6px 10px;
}

.iconLabel--default {
  @include font-color;
}


.iconLabel--size {
  @include font-color;
  font-size: 5em;
  &__large{
    font-size: 15em;
  }
}

答案 3 :(得分:0)

你也可以尝试这种方式,虽然这不是一个有效的解决方案。

original = [['A', 'Value 1', 'Value 2'],['B', 'Value 3', 'Value 4'],['A', 'Value 5', 'Value 6'],]
first_element_count = []
for ls in original:
    first_element_count.append(ls[0])
seen, result = set(), []
len_first_element=len(first_element_count)-1
# finding the index of duplicate element and store the first index
while len_first_element>=0:
    item = first_element_count[len_first_element]
    if item not in seen:
        seen.add(item)
    else:
        result.append(len_first_element)

    len_first_element = len_first_element - 1
# removing the list from the list
for i in result:
    del original[i]
print(original)