Получить ключ, который имеет определенный атрибут своего значения - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть словарь со списком объектов в качестве значений.

class Device_Terminals():
    """Class for define object for each device"""
    def __init__(self, device_name, source, drain):
        self.device_name = device_name
        self.source = source
        self.drain = drain

device = Device_Terminals(line[0], line[1], line[3])
if line[2] not in devices_dict:
        devices_dict[line[2]] = []
devices_dict[line[2]].append(device)

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

{A1:[ MNA1 X_N1 VSS, MPA1_1 X X_P1_1, MPA1_2 X X_P1_2, MPA1_3 X X_P1_3, MPA1_4 X X_P1_4, MPA1_5 X X_P1_5, MPA1_6 X X_P1_6, MPA1_7 X X_P1_7], 'A3': [MNA3 X_N1 VSS, MPA3_1 X_P2_1 VDD, MPA3_2 X_P2_2 VDD, MPA3_3 X_P2_3 VDD, MPA3_4 X_P2_4 VDD, MPA3_5 X_P2_5 VDD]}

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

 device_name == MPA3_3: 
   return key

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Вы можете создать defaultdict из collections вместо проверки, существует ли ключ, и затем добавить его.

from collections import defaultdict
devices_dict = defaultdict(list)

Добавить к этому диктову:

device = Device_Terminals(line[0], line[1], line[3])
devices_dict[line[2]].append(device)

Чтобы искать его значения, вы помещаете простой словарь в словарь:

# your search term
search_val = 'device_name'
for key, devices in devices_dict.items():
    for device in devices:
        if search_val == device.device_name:
            print(key)
0 голосов
/ 12 ноября 2018

Если вы пытаетесь продиктовать поиск, используя его значения. Попробуйте посмотреть на решение этого ранее отвеченного вопроса.

Получить ключ по значению в словаре

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