反復可能オブジェクト(Iterable)から正規表現の一致部分が重複しない要素を1つずつ抜き出すサンプルコードです。辞書型dict
がキーと値のタプルで初期化でき、キーの重複する値を自動で上書きすることを利用しています。
import re #元から重複しないのでセットとして用意 #リスト[...]などでも構わない。 values = ("ab1111", "ab1112", "ac2111", "ac2112") #正規表現パターンの準備 #末尾2桁を一致部分とする。 #先頭が"a"でない要素は除外する。 pattern = re.compile(r"^a.+(\d\d)$") #パターンの一致部分と一致部分のタプルリストから辞書の作成 #パターンに一致しない要素は除外される。 d = dict({(m.groups()[0], value) for value in values if (m := pattern.match(value))}) #キーの重複しないリストへ変換 l = list(d.values()) print(l) #> ['ac2112', 'ac2111']