невозможно присвоить значение из словаря Python переменной - PullRequest
0 голосов
/ 03 апреля 2019

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

Я пробовал:

self.currency = inflationcurrency[self.currency]
self.currency = inflationcurrency.get([self.currency])

вверху я попытался объявить self.currency как

self.currency = ''.join(self.tempholder[0])

Это код:

import string

datatype = "Inflation SABR Vol ATM ZC"
dataconvention = "UK-RPI-ZERO-COUPON-SWAP-RATE"
mdlname = "INFLATION_SABR"
t1 = 'should-send-back-none'

class srtqualifier:
    def __init__(self,mdlname,datatype, dataconvention,t1):
        self.mdlname = mdlname
        self.datatype = datatype
        self.dataconvention = dataconvention
        self.t1 = t1 ##TO BE REMOVED, ONLY USE FOR TESTING##
        self.tempholder =  self.dataconvention.split("-")
        self.currency = self.tempholder[0]

    def curr(self):
        if self.mdlname == "INFLATION_SABR":
            inflationcurrency = {'UK':'GBP','FR':'EUR','EU':'EUR','US':'USD'}
            self.currency = inflationcurrency.get(self.currency)
        else:
            return self.currency

        def makequalifier(self):
        qualifier = string.join([self.currency,"|",self.spartSABR(),"|",self.modelname(),"|",self.dttype(),"|",self.lastpart()])
        return qualifier 

test1 = srtqualifier(mdlname,datatype,dataconvention,t1)
print(test1.makequalifier())

Ошибка в приведенной выше ожидаемой строке, но полученная Nonetype от self.currency

Я не получаю ничего, когда делаю ниже.

print (test1.currency())

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

Правильно ли вы обращаетесь к нему?inflationcurrency не имеет ключа с именем GBP.

(Pdb) self.currency
'GBP'

Pdb) inflationcurrency
{'EU': 'EUR', 'FR': 'EUR', 'US': 'USD', 'UK': 'GBP'}

Обратно значение ключа, чтобы оно заработало?

inflationcurrency = {'EUR': ['EUR', 'FR'], 'USD': 'US', 'GBP': 'UK'}
0 голосов
/ 03 апреля 2019

Вы используете валюту как переменную и как метод, переименуйте одну из них.

--- Редактировать ---

Вы не возвращаетесь в методе curr.

def curr(self):
    if self.mdlname == "INFLATION_SABR":
        inflationcurrency = {'UK':'GBP','FR':'EUR','EU':'EUR','US':'USD'}
        self.currency = inflationcurrency.get(self.currency)
    return self.currency

Это должно работать.

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