【问题标题】:python list merge similar url's into list inside listpython list 将相似的url合并到列表中的列表中
【发布时间】:2020-07-13 15:46:06
【问题描述】:

我有一个看起来像这样的链接列表

这些链接是网站阅读书籍的链接

但有些书有多个部分

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"]

【问题讨论】:

  • 您需要从算法的角度定义“相似”的含义,然后编写实现该算法的代码
  • @MarcinOrlowski 我认为在这个例子中它的 url 与额外的句点重复?
  • “我想这样做,以便用户可以输入书号以下载它并在此列表中获取正确的书数” - 这似乎是 dict 的工作,而不是list。给定书号,您希望如何找到正确的链接?
  • @MisterMiyagi 的想法是获取用户输入并将其输入到列表中,例如 book = 5 books_urls[5 + 1] 然后我注意到两部分书

标签: python list loops


【解决方案1】:

如果您希望用户能够输入书号并返回列表,我认为您希望构建列表字典而不是嵌套列表:

>>> 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']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    相关资源
    最近更新 更多