2014-04-04 34 views
0

我在Python以下詞典:如何把一本字典爲屬性=值

myDic = {} 
myDic['username'] = 'smith44' 
myDic['password'] = '123' 
myDic['email'] = '[email protected]' 

我想變成這樣:

username = 'smith44' 
password = '123' 
email = '[email protected]' 

,這樣我就可以直接使用用戶名,密碼並通過我的後一種方法直接發送電子郵件。我知道我可以使用字典,但爲了兼容性,我需要這樣做。

此外,我需要做的是將每個字典鍵變成一個單獨的屬性,將取其相應的字典值的值。

UPDATE 爲了進一步支持什麼,我需要做的,這裏是我迄今所做的:

for key, value in myDic.iteritems(): 
     exec("%s = " "'""%s""'" % (key, value)) 
+1

你是什麼意思?如果你正在調用一個函數,你可以從字典中直接解壓縮:'somefunc(** myDic)'。如果你的意思是「我怎樣才能將字典值變成局部變量」,我建議你把它們放在字典中。 – jonrsharpe

+0

@jonrsharpe請再看看我的問題。我修復了一些語義錯誤,所以我可以更好地傳達我的觀點。我基本需要的是一些將在運行時執行的語句。 – kstratis

+0

現在還不清楚。請詳細解釋你想要做什麼,以及爲什麼。一般來說,使用'eval'是一個不好的跡象。 – jonrsharpe

回答

2

如果你確實需要這樣做:

>>> d = {} 
>>> d['test'] = "foo" 
>>> locals().update(d) 
>>> test 
'foo' 

但是,如果我是你,我會嘗試找到解決你想要解決的問題的另一種方法,而不是自動將變量添加到本地命名空間。幾乎總是有一種解決這個混亂的方法。

+0

請參閱我的更新文章 – kstratis

+0

@ Konos5我已經看到了更新,我的代碼完成了你想要的任務。如果您不瞭解該示例的任何部分,請解釋。 – Carsten

+0

事實上你的解決方案工作。我不好,我第一次沒有給予適當的關注!謝謝 – kstratis

1

你會attribute = value格式使用get字符串str.join

In [12]: ", ".join(["%s = %s" % (k, v) for k,v in myDic.items()]) 
Out[12]: 'username = smith44, password = 123, email = [email protected]' 

In [13]: myDic.items() 
Out[13]: [('username', 'smith44'), ('password', '123'), ('email', '[email protected]')] 
+0

我不需要一個字符串。我需要一些將從'myDic'生成的屬性值對。 – kstratis

+0

這將產生一個SyntaxError,正確的乘法賦值方式是'username,password,email =「smith44」,「123」,「[email protected]」'。還要注意,在你的解決方案中,你不是將'smith44'作爲一個字符串賦值,而是作爲一個變量,除非已經在其他地方定義了,否則會產生一個NameError。 – Ffisegydd

+0

@ Konos5爲'attribute-value'對添加了新代碼 – Nilesh