У меня есть список цепей, которые содержат числа глав серий. У меня есть список в этом формате:
Serie2- (1)
Serie2- (4)
Serie2- (10)
Serie2- (3)
Реализовав lista.sort()
они остались бы такими:
Serie2- (1)
Serie2- (10)
Serie2- (3)
Serie2- (4)
Существует способ способствовать тому, чтобы они были рукоположены из-за версий?
Serie2- (1)
Serie2- (3)
Serie2- (4)
Serie2- (10)
Или я буду должен менять имена один на один и добавлять 0 к числам единственного числа?
Ты можешь использовать LooseVersion
, которые позволяют упорядочивать "из-за версий" вместо numГ©ricamente:
from distutils.version import LooseVersion
versiones = ["Serie2- (1)", "Serie2- (4)", "Serie2- (10)", "Serie2- (3)"]
lv = [LooseVersion(ver) for ver in versiones]
lv.sort()
Сейчас порядок - красивый, на основании версий:
>>> lv
[LooseVersion ('Serie2- (1)'),
LooseVersion ('Serie2- (3)'),
LooseVersion ('Serie2- (4)'),
LooseVersion ('Serie2- (10)')]
Хороший для твоего случая ты мог бы использовать метод sort
, но приводя в соответствие это, в которое ты нуждаешься, я даю тебе пример:
Сначала оставил тебе ссылку в ней documentaciГіn sort
Упорядочивать КАК ее pГЎgina python.org , так как allГ - encontrarГЎs примеры сложных распоряжений .
Сейчас объяснил немного, как ты мог бы решать это:
re.findall(r'\d+', cad.split("-")[1])[0]
то, что он делает cГіdigo предыдущий, состоит в том, чтобы возвращать их мне nГєmeros цепи в этом случае " (1)"
, " (4)"
, и т.д., так как я делаю split , чтобы это делить из-за "-"
, он возвратит мне 1
, 4
, 'и т.д.'.
ты Можешь находить mГЎs informaciГіn на re
в Г©ste ссылку
Сейчас мы используем метод sort, чтобы упорядочивать используя lambda (В первой ссылке ты находил informaciГіn на Г©sto) :
series.sort(key=lambda cad: (int)(re.findall(r'\d+', cad.split("-")[1])[0]))
то, что делается с cГіdigo предыдущий, состоит в том, чтобы упорядочивать твой список из-за них nГєmeros, что находятся после guiГіn каждой цепи.
Сейчас пример с данными, которых ты поместил: Вышедшие
import re
series = ["Serie2- (1)", "Serie2- (4)", "Serie2- (10)", "Serie2- (3)"]
series.sort(key=lambda cad: (int)(re.findall(r'\d+', cad.split("-")[1])[0]))
print (series)
:
['Serie2 - (1)', 'Serie2 - (3)', 'Serie2 - (4)', 'Serie2 - (10)'] Надеялся
подайте тебя. Привет ;)
Одна aproximaciГіn простая serГ, - чтобы "захватывать" их nГєmeros versiГіn и упорядочивать numГ©ricamente из-за тех же самых. Мы можем использовать регулярные выражения, чтобы извлекать любой nГєmero между скобками
import re
regex = r"\((\d+)\)"
versiones_ordenadas = sorted(versiones, key=lambda x: int(re.search(regex, x).group(1)))
print(versiones_ordenadas)
['Serie2- (1)', 'Serie2- (3)', 'Serie2- (4)', 'Serie2- (10)']
С key=lambda x: int(re.search(regex, x).group(1))
, устанавливаем одну funciГіn anГіnima, чтобы возвращать стоимость, из-за которой мы будем упорядочивать, в этом случае это стоимость numГ©rico ее expresiГіn захваченная.
v
, irí вversiones
правда? – Lucas Damian 23.12.2019, 19:15