Получить элемент объекта из списка на основе ключа объекта в Python - PullRequest
0 голосов
/ 23 мая 2018

Просто интересно, есть ли более элегантный способ извлечь значение из определенного объекта в списке, основываясь на том, содержит ли объект конкретное значение или если мне нужно написать что-то, чтобы пройти по списку и посмотреть на каждый из объектов,Например:

class C(object):
    def __init__(self, url, value):
        self.url=url
        self.value=value

obj1 = C("http://1", 1)
obj2 = C("http://2", 2)
mylist = [obj1, obj2]

# I want to search  mylist and retrieve the "value" element if there is
# an object with a "url" value of "http://2"...basically retrieve the 
# value 2 if an element exists in the list with a url value of "http://2"

Конечно, если бы я знал, что он существует в 1-м элементе списка, я мог бы получить его следующим образом:

mylist[1].value

Однако в моем случае я не могузнаю, существует ли этот объект в списке или нет, и я не знаю, в какой позиции в списке он существует.

1 Ответ

0 голосов
/ 23 мая 2018

Вам нужно пройти по списку и посмотреть на каждый из объектов.

Если вы ожидаете одно совпадение, вы можете использовать next с выражением генератора:

res = next((i.value for i in mylist if i.url == 'http://2'), None)

print(res)
# 2

Есливы ожидаете несколько совпадений, вы можете использовать понимание списка:

res = [i.value for i in mylist if i.url == 'http://2']

print(res)
# [2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...