Python 将作业转换为dict
我有很多硬输入的作业:Python 将作业转换为dict,python,Python,我有很多硬输入的作业: definition = ['basename', 'dirname', 'supports_unicode_filenames'] condition = ['isabs', 'isdir', 'isfile', 'islink', 'ismount'] . . . 打算将其转换为dict,避免重复键入: {'definition': ['basename', 'dirname', 'supports_unicode_filenames'], 'condition'
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']}
如何在快捷方式中执行此操作?您可以执行以下操作:
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']}
就像你刚才展示的那样。。。你到底在问什么?
d={'definition':definition,'condition':condition}
,不要阴影dict
我现在正在编辑请参考编辑过的问题@JonClementsNot不是这样的,但是在什么情况下你需要这个,你可以手动创建字典?如果有更多的作业,就会有大量的输入。这不是一个好的设计,特别是如果你有很多作业的话。我鼓励你们重新思考你们的课堂设计,直接在dict中重新组织你们的数据,而不是在课堂成员中。为什么要否决这个?这个问题不是很好,但答案是准确的。如果更多的任务,会有大量的输入。你从哪里得到这些变量?