Мне нужно сравнить первые n символов элементов в списке с первыми n символами других элементов в том же списке, а затем удалить или оставить один из этих элементов.
В приведенном ниже примере списка«AB2222_100» и «AB2222_P100» будут считаться дубликатами (даже если они технически уникальны), потому что первые 6 символов совпадают.При сравнении двух значений, если x [-4:] = "P100", то это значение будет сохранено в списке, а значение без «P» будет удалено.Другие элементы в списке будут сохранены, поскольку дубликатов не существует, независимо от того, является ли он суффиксом «P100» или «100» в конце строки.В этом случае никогда не будет более одного дубликата («P» или нет).
- AB1111_100
- AB2222_100
- AB2222_P100
- AB3333_P100
- AB4444_100
- AB5555_P100
Я понимаю срезы и сравнения, но все принимает уникальные значения.Я надеялся использовать списочное понимание вместо длинного цикла for, но также хочу понять, что я вижу.Я заблудился, пытаясь выяснить коллекции, наборы, почтовые индексы и т. Д. Для этого неуникального сценария.
Нарезка и сравнение не сохранят требуемый суффикс, который необходимо сохранить в окончательном вариантеlist.
newList = [x[:6] for x in myList]
Вот так он должен начинаться и заканчиваться.
myList = ['ABC1111_P100', 'ABC2222_100', 'ABC2222_P100', 'ABC3333_P100', 'ABC4444_100', 'ABC5555_P100']
newList = ['ABC1111_P100', 'ABC2222_P100', 'ABC3333_P100', 'ABC4444_100', 'ABC5555_P100']