LINUX.ORG.RU

Чето не вкурил с пониманием задачи

 


0

1

Вот задали такую задачку:

Имеется csv-файл вида (данные не упорядочены):
email,name

test1@mail.ru,username1

test2@gmail.com,username2

test3@gmail.com,username3

test4@rambler.ru,username4

test5@ya.ru,username5

...

testN@yahoo.com,usernameN

Используя данные из csv-файла необходимо создать список, в котором будут содержаться группы кортежей вида (email, name) с условием, что в каждой группе почтовые домены не должны повторяться. Пример:

[

   [

      ( ...@mail.ru, ... ),

      ( ...@gmail.com, ... ),

      ( ...@rambler.ru, ... ),

      ( ...@ya.ru, ... ),

      ( ...@..., ... ),

      ( ...@yahoo.com, ... )

   ],


Ответ на: комментарий от Jopich

Скорее всего надо если домен есть в первом котреже отправлять во второй, если там есть - в третий и тд

Dred ★★★★★
()
Ответ на: комментарий от Jopich

Они хотят чтобы если есть три емейла на домен gmail, то только первый пошел в первую группу, второй - во вторую. Не больше одного примера емейла с определенным доменом.

1@a, 2@b, 3@c, 4@a, 5@b, 6@a

превращается в

1@a, 2@b, 3@c,

4@a, 5@b,

6@a

Порядок я так понял не важен

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от Jopich

Как я понял, тебе надо, чтобы в каждом списке (группе) были все e-mail'ы разные (то есть, с разных доментов). Распихать их по группам без повторов внутри группы. Проще всего это сделать, разложив их в списки по одинаковым доменам, а потом itertools.zip_longest эти списки.

Psych218 ★★★★★
()

Используй словарь с доменами в качестве ключей и метод dict.get: D[domain] = D.get(domain, []) + [(email,name)], а потом result = [list(filter(None, i)) for i in itertools.zip_longest(*D.values())].

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.