简体   繁体   English

将分配转换为字典

[英]Transform assignments to dict

I have hard typed lots of assignments: 我很难键入很多作业:

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

Intend to transform them to dict avoiding repeating typing: 打算将它们转换为字典,避免重复输入:

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

I tried to encapsulate them in class. 我试图将它们封装在课堂上。

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

Working on console 在控制台上工作

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

How to do it in shortcut? 如何在快捷方式上做到?

You can do: 你可以做:

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

Note that you should avoid using the variable name dict , which is a builtin object. 请注意,应避免使用变量名称dict (它是一个内置对象)。

But to be honest, what you're trying to do is not good practice if you're doing this at scale. 但老实说,如果您要大规模执行此操作,则不是很好的做法。 You should rethink the design of your object. 您应该重新考虑对象的设计。

Could this be what you want: 这可能是您想要的吗?

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

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

Use SimpleNamespace 使用SimpleNamespace

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

It outputs: 它输出:

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