[英]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.