python сортировка ссылок в списке - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть такой список

list = [
    "https://google.com page 1",
    "https://example.com page 1",
    "https://example.com page 1",
    "https://example.com page 2",
    "https://google.com page 2",
    "https://google.com page 2",
    "https://google.com page 2",
    "https://example.com page 3",
    "https://google.com page 3"
]

строка выглядит следующим образом: "https://link.com страница (номер страницы)"

страница после ссылка - это тег, который я создал, чтобы я мог знать, с какой страницы эта ссылка

номер страницы не указан в указанном c диапазоне, он произвольный

есть 3 ссылки со страницы 1

и 3 ссылки со страницы 2

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

, в этом примере наименьший тег - страница 3

в основном удалите 1 ссылку со страницей 1 и 2 ссылки со страницы 2

как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 08 апреля 2020

Из того, что я понимаю, вы хотите сохранить одинаковое количество строк в вашем списке для каждого тега, где тег - это строка сразу после вашего URL:

from collections import defaultdict

my_list = ["https://google.com page 1","https://example.com page 1",
        "https://example.com page 1","https://example.com page 2","https://google.com page 2",
        "https://google.com page 2","https://google.com page 2","https://example.com page 3",
        "https://google.com page 3"]

d = defaultdict(list)
for e in my_list:
    url, tag = e.split(maxsplit=1)
    d[tag].append(url)

min_freq = min(map(len, d.values()))

my_list = [' '.join([url, tag]) for tag, l in d.items() for url in l[:min_freq]]
my_list

output:

['https://google.com page 1',
 'https://example.com page 1',
 'https://example.com page 2',
 'https://google.com page 2',
 'https://example.com page 3',
 'https://google.com page 3']
0 голосов
/ 08 апреля 2020

Прежде всего, обратите внимание на имя вашей переменной, вы называете это «список», я не рекомендую вызывать переменную только по их типам.

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

first_list = [0, 0, 0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 8]
new_no_duplicates_list = []

for value in first_list:
    if value not in new_no_duplicates_list:
       new_no_duplicates.append(value)

Этот l oop добавляет новое значение в список, если список не содержит этого значения, это означает, что если значение уже есть, оно не будет добавлено это дважды.

Вывод кода: [0, 1, 2, 3, 4, 5, 6, 7, 8]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...