Python动态对象生成

Python动态对象生成,python,object,dictionary,Python,Object,Dictionary,我正在编写一个Python脚本,它接受一个目录,并为该目录中特定类型的每个文件创建一个字典或自定义对象 我觉得自己像个白痴,但当我真正开始创建字典时,我对如何实例化和跟踪动态对象感到困惑 #Pseudocode for each conf file in given directory: x = customObject('filename') # variable name fail track_list.append(customObject('filename')) # t

我正在编写一个Python脚本,它接受一个目录,并为该目录中特定类型的每个文件创建一个字典或自定义对象

我觉得自己像个白痴,但当我真正开始创建字典时,我对如何实例化和跟踪动态对象感到困惑

#Pseudocode
for each conf file in given directory:
    x = customObject('filename') # variable name fail
    track_list.append(customObject('filename')) # this seems weird
我应该创建这些对象并将它们添加到列表中吗?人们通常是怎么做的?我觉得我在试图写能写更多代码的代码

track_list = [custom_object(filename) for filename in directory]
其中directory是您关心的文件名列表,这是一种非常常见的模式。如果您想要一个包含关键字文件名的词典,可以执行以下操作:

custom_dict = dict((filename, custom_object(filename)) for filename in directory)
result = dict((filename, customObject(filename)) for filename in directory)
其中directory是您关心的文件名列表,这是一种非常常见的模式。如果您想要一个包含关键字文件名的词典,可以执行以下操作:

custom_dict = dict((filename, custom_object(filename)) for filename in directory)
result = dict((filename, customObject(filename)) for filename in directory)

@nmichaels的答案是最干净、最具Python风格的方法。更短的方法是:

track_list = map(customObject, directory)
编辑:哦,我知道你想要一本字典,尽管你的伪代码列出了一个列表。您可以这样做:

custom_dict = dict((filename, custom_object(filename)) for filename in directory)
result = dict((filename, customObject(filename)) for filename in directory)
说明:
dict
获取一个对象,当对该对象进行迭代时,该对象生成元组并将其转换为字典,例如

>>> dict([('hey', 3), ('food', 4), ('haxhax', 6)])
{'food': 4, 'haxhax': 6, 'hey': 3}

@nmichaels的答案是最干净、最具Python风格的方法。更短的方法是:

track_list = map(customObject, directory)
编辑:哦,我知道你想要一本字典,尽管你的伪代码列出了一个列表。您可以这样做:

custom_dict = dict((filename, custom_object(filename)) for filename in directory)
result = dict((filename, customObject(filename)) for filename in directory)
说明:
dict
获取一个对象,当对该对象进行迭代时,该对象生成元组并将其转换为字典,例如

>>> dict([('hey', 3), ('food', 4), ('haxhax', 6)])
{'food': 4, 'haxhax': 6, 'hey': 3}

嘿,是的。2.7在3之后发布,但现在我有理由升级到它!去吧,去吧,是的。2.7在3之后发布,但现在我有理由升级到它!需要澄清的是:“创建一个字典或自定义对象”你的意思是“创建一个自定义对象的字典”吗?“为该目录中特定类型的每个文件创建”是指为找到的每个不同类型的文件创建一个单独的(词典)吗?需要澄清的是:“创建词典或自定义对象”是指“创建自定义对象词典”吗?“为该目录中特定类型的每个文件创建”是指为找到的每个不同类型的文件创建一个单独的(词典)吗?