Вызовите объект в списке с именем - PullRequest
0 голосов
/ 17 февраля 2020

Мне нужно знать, есть ли способ использовать имя в качестве индекса для каждого члена списка объектов, как в словарях.

import numpy as np

class Marker(object):
    def __init__(self):
        self.name: str
        self.location: np.ndarray

locations = np.random.rand(5,3)
names = ['apple','body','wear','orange','bear']

markers= []
for n,l in zip(names, locations):
    marker = Marker()
    marker.name = n
    marker.location = l
    markers.append(marker)

Например, в приведенном выше списке есть способ вызвать объекты в списке с их именами? как markers['apple'] вместо markers[0]?

1 Ответ

1 голос
/ 17 февраля 2020

Если вы хотите проверить, существует ли объект в списке, вы можете сделать это, используя оператор in:

if marker in markers:
    # do stuff here

, похоже, вы хотите сохранить пару ключ-значение name является поиском для marker. Вместо этого вы можете сделать markers словарь:

markers= {}
for n,l in zip(names, locations):
    marker = Marker()
    marker.name = n
    marker.location = l
    markers[n] =marker

Затем, чтобы получить доступ к данному маркеру, выполните поиск на основе имени:

marker = markers['apple']

Если только 2 точки данных являются в вашем классе Marker, возможно, вообще отбросьте объект Marker и просто вместо этого сохраните location в тексте:

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