[英]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.