2016-10-10 129 views
1

字典我有這些對象:把同一類的對象與不同的密鑰的Python

class Object(object): 

    def __init__(self, name, *parameters): 
     self.name = name 
     self.parameters = parameters 

    def name(self): 
     return self.name 

    def parameters(self): 
     return self.parameters 

class Parameter(object): 

    def __init__(self, name, value): 
     self.name = name 
     self.value = value 

我的目的是讓在字典1個對象的所有參數,但它需要落得這樣:

{ParameterOne: "ValueOne", ParameterTwo: "ValueTwo"} 

因爲我必須要能夠給的參數不同的名字,我不能做這樣的:

class Parameter(object): 

    def __init__(self, value): 
     self.ParameterOne = value 

我嘗試它這樣,這顯然沒有工作:

data = {} 
    for parameter in object.parameters: 
     data.update(vars(parameter)) 

有沒有什麼辦法可以做到這一點?

+0

'__dict__'。 'object .__ dict__'應該這樣做。 –

+0

返回類似 {'name':'CreatedObjectTwo','參數':(<0x7f248d846150>的參數對象,<參數對象0x7f248d846810>)} – Hatox

+0

道歉。從你的例子中,我認爲你想能夠在'self.ParameterOne'中命名它們。你究竟在努力實現什麼? –

回答

0
data = {parameter: ''.join(['Value ', str(index)]) 
     for index, parameter in enumerate(object.parameters)} 

這會給你{parameter0: 'Value 0', ...}如果你想要得到的英文單詞爲數字,你,將不得不要麼推出自己的功能,或使用外部包像inflect

只是一個觀察,但大多數字典將字符串映射到對象,而不是其他方式。你有這樣做的理由嗎?

編輯:

重讀你的問題,你在找

data = {parameter: parameter.name for parameter in object.parameters} 

我想你可能想嘗試的對象,而不是

data = {parameter.name: parameter.value for parameter in object.parameters} 
相關問題