Использование переменной для доступа к ключу словаря Python - PullRequest
0 голосов
/ 29 сентября 2019

Я работаю со словарями, которые будут использоваться для отслеживания нескольких долларовых остатков. Для этого я использовал следующий словарь, содержащийся внутри класса:

principal = {"A": 2998.41, "B": 5794.58, "C": 3806.04, "D": 4190.39, "E": 4638.05, "F": 1827.17, "G": 4618.19, "H": 1737.77, } priority = {"A": 6, "B": 5, "C": 2, "D": 1, "E": 4, "F": 3, "G": 8, "H": 7}

Они в конечном итоге достигнут нуля, но, поскольку это может происходить в разное время, мне нужен способ выяснить, какиеодин был оплачен, когда. Как часть функции класса, у меня есть следующий код:

            for key, value in self.principal.items():

            # Check to ensure a pmt would not cause a group's balance to be paid off and become negative.
            # If it would, apply the excess to the next-highest priority group.

            if (self.principal[key] * (1 + self.int_monthly[key])) - self.pmts[key] <= 0:

                del (self.priority[self.groups[key]])

                excess = round((self.pmts[key] - self.principal[key] * (1 + self.int_monthly[key])), 2)
                print("Excess from group "+str(self.principal[key])+": $"+str(excess))

pmts и int_monthly также являются словарями, и вычисления работают нормально, потому что их значения извлекаются с помощью обращения к dict [ключ], но с удалениеми печатать заявления, например, я хочу знать, какой ключ был оплачен и удалить его из словаря, а не возвращать текущее значение этого ключа.

В существующем виде этот кодвыдает KeyError, потому что в словаре «priority» нет клавиши «D». В моей жизни ничего о словарях, кажется, не позволяло мне получить доступ к ключу на основе некоторого значения переменной, подобного этому.

Было бы легко, если бы я знал, к какому ключу я хотел бы обратиться заранее (я бы простоскажем self.principal ["ключ"]). Но я начинаю думать после просмотра здесь и Google, что не может быть способа сделать это, просто используя словари. Есть ли общее решение этой проблемы?

1 Ответ

0 голосов
/ 30 сентября 2019

Вы не можете получить ключ dict из значения, но вы можете перебирать значения dict и возвращать ключи, когда значение соответствует вашему значению

пример:

d = {1:'one'}
a = 'one'
for key, value in d.items():
    if value = a:
    print(key)

вывод:

1

ключ не существует

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