簡體   English   中英

將分配轉換為字典

[英]Transform assignments to dict

我很難鍵入很多作業:

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

打算將它們轉換為字典,避免重復輸入:

{'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']}

如何在快捷方式上做到?

你可以做:

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

請注意,應避免使用變量名稱dict (它是一個內置對象)。

但老實說,如果您要大規模執行此操作,則不是很好的做法。 您應該重新考慮對象的設計。

這可能是您想要的嗎?

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

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

使用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']}

In [17]: dict(definition = ['basename', 'dirname', 'supports_unicode_filenames'],condition = ['isabs', 'isdir'
    ...: , 'isfile', 'islink', 'ismount'])
Out[17]: 
{'definition': ['basename', 'dirname', 'supports_unicode_filenames'],
 'condition': ['isabs', 'isdir', 'isfile', 'islink', 'ismount']}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM