转换任务为di

2024-06-16 11:24:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有很多作业要打:

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

怎么用捷径?你知道吗


Tags: dtunicodeconditiondictfilenamesdirnamedefinitionsupports
3条回答

你可以做:

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

相关问题 更多 >