python 3.7 list.pop по имени, а не по индексу - PullRequest
0 голосов
/ 13 января 2020

У меня есть список, который собирается из скрипта очистки, но мне не нужны все возвращаемые значения. Я хотел бы вытолкнуть указанные c элементы из первого списка и поместить их во второй список, а затем использовать второй список в оставшейся части сценария.

У меня есть код, чтобы я мог сделать это по индексу списка. Однако, чтобы сделать более универсальным, я хотел бы сделать по имени элемента. Например, просто введите Tag: football, так как первый список может изменить порядок или размер.

Текущий первый список:

List1 = [Tag: American Football, Tag: Athletics, Tag: Australian Rules, Tag: Awards, Tag: Badminton, Tag: Baseball, Tag: Basketball, Tag: Bowls, Tag: Boxing, Tag: Cheltenham Festival, Tag: Chess, Tag: Cricket, Tag: Cycling, Tag: Darts, Tag: Football, Tag: Gaelic Games, Tag: Golf, Tag: Greyhounds, Tag: Handball, Tag: Harness Racing, Tag: Horse Racing, Tag: Ice Hockey, Tag: Motorsport, Tag: Novelty, Tag: Politics, Tag: Pool, Tag: Rugby League, Tag: Rugby Union, Tag: Snooker, Tag: TV, Tag: Table Tennis, Tag: Tennis, Tag: UFC/MMA, Tag: Volleyball, Tag: Winter Sports]

Ожидаемый второй список:

List2 = [Tag: Football, Tag: Horse Racing]

Код:

List1 = [Tag: American Football, ...] 

List2 = []
List2.append(List1.pop(15))

1 Ответ

0 голосов
/ 13 января 2020

Я бы предположил, что это зависит от используемой вами библиотеки. Похоже, этот Tag тип является классом, который входит в него. Вы должны просмотреть список в поиске нужного вам объекта, получить доступ к его атрибуту, добавить этот объект во второй список и удалить из первого.

Пример:

def custom_pop(list1: list, value):
    obj = next((tag for tag in list1 if tag.ATTRIBUTE == value), None)
    if obj:
        list1.remove(obj)
    return obj

После этого добавить этот объект во второй список.

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