Удалить дубликаты из списка буквенно-цифровых имен файлов - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть список буквенно-цифровых имен файлов, следующий:

['build999.100', 'build999.0', 'buil998.100', 
 'build997.100', 'build996.100', 'build996.0']

Я хочу получить список, удаляющий дубликаты суффикса поста '.', Т.е. я хочу, чтобы мой список был

['build999.100', 'buil998.100', 'build997.100', 'build996.100']

Суффикс после '.' не имеет значения, мне просто нужно удалить дубликаты на основе 999, 998 и т. Д.

Я ищу реализации в Python или Unix.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Простой и эффективный способ сделать это - использовать словарь с префиксом в качестве ключа, поскольку ключи dict уникальны.

data = ['build999.100', 'build999.0', 'buil998.100', 'build997.100', 'build996.100', 'build996.0']
d = {s.split('.')[0]: s for s in data}
out = list(d.values())
0 голосов
/ 25 сентября 2018

Используйте регулярные выражения:

import re
a = ['build999.100', 'build999.0', 'buil998.100', 
    'build997.100', 'build996.100', 'build996.0']
list(set(map(lambda x: re.sub(r'\..*$', '.100', x), a)))

или

list(set([re.sub(r'\..*$', '.100', x) for x in a]))

Результат равен

>> ['build996.100', 'build999.100', 'buil998.100', 'build997.100']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...