当列表的第一个值与列表中的另一个项目重复时,我想删除列表列表中的项目。
假设我有这个清单:
[['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']]
答案 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)