我正在编写一个带有目录的Python脚本,对于该目录中特定类型的每个文件,都会创建一个字典或自定义对象。
我觉得自己像个白痴,但是当我到达实际创建字典的部分时......我对如何实例化和跟踪动态对象感到困惑。
#Pseudocode
for each conf file in given directory:
x = customObject('filename') # variable name fail
track_list.append(customObject('filename')) # this seems weird
我应该创建这些对象并将它们添加到列表中吗?人们通常如何做到这一点?我觉得我正在尝试编写更多代码的代码?
答案 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)}