Python动态对象生成混乱
问题描述:
我正在写一个Python脚本,需要一个目录,并且对于该目录中特定类型的每个文件,创建一个字典或自定义对象。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]
其中目录是您关心的文件名列表是一种非常常见的模式。如果你想用关键字文件名的字典,你可以这样做:
custom_dict = dict((filename, custom_object(filename)) for filename in directory)
答
@nmichaels答案是做最清洁和最Python的方式。更短的方法是:
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}
+0
哈,同时编辑ftw。 '地图'虽然很不错。 – nmichaels 2011-03-22 19:05:02
需要说明:通过“创建字典或自定义对象”的意思是“创建**自定义对象的字典**(** s **)”?通过“对于该目录中特定类型的每个文件创建”,您是否意味着为每个找到的不同类型的文件创建单独的一个(字典)? – martineau 2011-03-22 20:02:11