簡體   English   中英

substring python 列表中的唯一值

[英]unique value in a list on substring python

需要根據之前的第一部分刪除重復值 - 如下所示。

Input:   
 a=['abc-123','abc-345','def-234']
Expected Output:
 a=['abc-123','def-234']

我可以在下面做沒有任何 substring 部分的唯一值,但不能使 substring 使用和刪除重復項並只保留第一次出現。

list(set(a))

這個怎么樣(對不起,我無法實現單行)

head = [_a.split("-")[0] for _a in a]
index = [i for i, item in enumerate(head) if not item in head[:i]]
result = [a[i] for i in index]

我會這樣寫:

seen = set()
out = []
for elem in a:
    prefix = elem.split('-')[0]
    if prefix not in seen:
        seen.add(prefix)
        out.append(elem)

這是一個單行:

seen = set()
[x for x in a if not (x.split('-')[0] in seen or seen.add(x.split('-')[0]))]

如果您使用的是 Python >= 3.8,則有海象運算符,因此您不需要調用split兩次:

[x for x in a if not ((prefix := x.split('-')[0]) in seen or seen.add(prefix))]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM