python список объединяет похожие URL-адреса в список внутри списка - PullRequest
0 голосов
/ 13 июля 2020

у меня есть список ссылок, который выглядит следующим образом

ссылки предназначены для сайта для чтения книг

но некоторые книги состоят из нескольких частей

books_urls = [
    "https://example.com/read-book-22"
    "https://example.com/read-book-21.5"
    "https://example.com/read-book-21.1"
    "https://example.com/read-book-21"
    ...
    "https://example.com/read-book-5"
    "https://example.com/read-book-4"
    "https://example.com/read-book-3"
    "https://example.com/read-book-2"
    "https://example.com/read-book-1"
]

я хочу чтобы сделать книги, которые имеют несколько списков частей внутри этого списка

в этом примере книга 21 имеет более 1 части

я хочу сделать это, чтобы пользователь мог ввести номер книги для загрузки это и чтобы получить правильное количество книг в этом списке

вот как я хочу, чтобы список выглядел в конце

books_urls = [
    "https://example.com/read-book-22"

    ["https://example.com/read-book-21",
    "https://example.com/read-book-21.1",
    "https://example.com/read-book-21.5"]

    ...
    "https://example.com/read-book-5"
    "https://example.com/read-book-4"
    "https://example.com/read-book-3"
    "https://example.com/read-book-2"
    "https://example.com/read-book-1"]

1 Ответ

2 голосов
/ 13 июля 2020

Если вы хотите, чтобы пользователь мог ввести номер книги и получить список обратно, я думаю, вам нужно создать словарь списков, а не вложенный список:

>>> flat_links = [
...     "https://example.com/read-book-22",
...     "https://example.com/read-book-21.5",
...     "https://example.com/read-book-21.1",
...     "https://example.com/read-book-21",
...     "https://example.com/read-book-5",
...     "https://example.com/read-book-4",
...     "https://example.com/read-book-3",
...     "https://example.com/read-book-2",
...     "https://example.com/read-book-1",
... ]
>>> import re
>>> from collections import defaultdict
>>> grouped_links = defaultdict(list)
>>> for link in flat_links:
...     grouped_links[re.match(".*read-book-(\d+).*", link).group(1)].append(link)
...
>>> grouped_links["22"]
['https://example.com/read-book-22']
>>> grouped_links["21"]
['https://example.com/read-book-21.5', 'https://example.com/read-book-21.1', 'https://example.com/read-book-21']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...