首页 > 解决方案 > 如何按特定顺序从列表中获取唯一值?

问题描述

我有一个重复值的列表,如下所示:

L1 = ['r-A','r-G','S1','r-A','S2','r-O','r-G','S2','S1','r-A']

并且喜欢删除包含'r-'的重复元素,仅将第一个值留在相应的位置。

这是:

For 'r-A' select L1[0] and in output would be L2[0]
For 'r-G' select L1[1] and in output would be L2[1]
For 'r-O' select L1[5] and in output would be L2[4]

所以输出列表将是:

L2 = ['r-A','r-G','S1','S2','r-O','S2','S1']

使用set()I 获得唯一值,但它以不同的顺序显示它们并删除不包含的值r-

>>> list(set(L1))
['S2', 'S1', 'r-A', 'r-G', 'r-O']

我怎样才能做到这一点?

标签: pythonlist

解决方案


这应该这样做:

L1 = ['r-A','r-G','S1','r-A','S2','r-O','r-G','S2','S1','r-A']
L2 = []
for item in L1:
    if 'r-' in item and item  in L2:
         continue
    else:
        L2.append(item)
print(L2)

输出:

['r-A', 'r-G', 'S1', 'S2', 'r-O', 'S2', 'S1']

推荐阅读