Python动态对象生成混乱

时间:2011-03-22 18:52:31

标签: python object dictionary

我正在编写一个带有目录的Python脚本,对于该目录中特定类型的每个文件,都会创建一个字典或自定义对象。

我觉得自己像个白痴,但是当我到达实际创建字典的部分时......我对如何实例化和跟踪动态对象感到困惑。

#Pseudocode
for each conf file in given directory:
    x = customObject('filename') # variable name fail
    track_list.append(customObject('filename')) # this seems weird

我应该创建这些对象并将它们添加到列表中吗?人们通常如何做到这一点?我觉得我正在尝试编写更多代码的代码?

3 个答案:

答案 0 :(得分:2)

track_list = [custom_object(filename) for filename in directory]

其中directory是您关心的文件名列表,这是一种非常常见的模式。如果您想要一个包含关键字文件名的字典,您可以这样做:

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

答案 1 :(得分:1)

@nmichaels答案是最干净,最恐怖的方式。更短的方式是:

track_list = map(customObject, 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 :(得分:0)

my_objects = {name:customObject(name) for name in dir if isMyType(name)}