2017-10-18 44 views
-1

我已經辛苦打字轉讓土地:變換分配與dict

definition = ['basename', 'dirname', 'supports_unicode_filenames'] 
condition = ['isabs', 'isdir', 'isfile', 'islink', 'ismount'] 
. 
. 
. 

打算改造他們與dict避免重複打字:

{'definition': ['basename', 'dirname', 'supports_unicode_filenames'], 
'condition': ['isabs', 'isdir', 'isfile', 'islink', 'ismount'] ...} 

我想,把它們封裝在課堂上。

class OsPath: 
    definition = ['basename', 'dirname', 'supports_unicode_filenames'] 
    condition = ['isabs', 'isdir', 'isfile', 'islink', 'ismount'] 

工作控制檯

In [125]: dt = dict(vars(OsPath)) 
In [127]: {i:dt[i] for i in dt if not i.startswith('__')} 
Out[127]: 
{'condition': ['isabs', 'isdir', 'isfile', 'islink', 'ismount'], 
'definition': ['basename', 'dirname', 'supports_unicode_filenames']} 

如何做到這一點的捷徑嗎?

+3

就像你剛剛表明...你究竟問? –

+2

'd = {'definition':defintion,'condition':condition}',不要陰影'字典' – schwobaseggl

+0

我現在正在編輯 –

回答

5

你可以這樣做:

definition = ['basename', 'dirname', 'supports_unicode_filenames'] 
condition = ['isabs', 'isdir', 'isfile', 'islink', 'ismount'] 
d = {'definition': definition, 'condition': condition } 

需要注意的是,你應該避免使用變量名dict,這是一個內置的對象。

但說實話,如果你按比例做這件事,你要做的不是好的做法。你應該重新考慮你的對象的設計。

+0

如果有更多的作業,會有巨大的輸入 –

+0

這不是一個好的設計,尤其是如果你有很多任務。我鼓勵你重新思考你的班級設計,並且直接用字典重新組織你的數據,而不是班級成員。 – DevShark

+0

爲什麼downvoting這?這個問題不是很好,但答案是現貨。 –

0

難道這是你想要什麼:

definition = ['basename', 'dirname', 'supports_unicode_filenames'] 
condition = ['isabs', 'isdir', 'isfile', 'islink', 'ismount'] 

result = {i: globals()[i] for i in ['definition', 'condition']} 
+0

如果有更多作業,會有巨大的打字 –

+0

你從哪裏得到這些變量? – zipa

0

使用SimpleNamespace

from types import SimpleNamespace 
sn = SimpleNamespace(
definition = ['basename', 'dirname', 'supports_unicode_filenames'], 
condition = ['isabs', 'isdir', 'isfile', 'islink', 'ismount'], 
) 

它輸出:

In [44]: sn 
Out[44]: namespace(condition=['isabs', 'isdir', 'isfile', 'islink', 'ismount'], definition=['basename', 'dirname', 'supports_unicode_filenames']) 

In [45]: vars(sn) 
Out[45]: 
{'condition': ['isabs', 'isdir', 'isfile', 'islink', 'ismount'], 
'definition': ['basename', 'dirname', 'supports_unicode_filenames']}