我正在尝试对具有多个属性的类进行排序,并将每个属性放入一个列表中。这在单元测试中用来确认我的类是否正确地对它们进行了排序。有没有一种方法可以在for循环中创建一个列表,并在一行(就像在列表理解中)向其中添加内容?
例如,为了现在对它们进行排序,我必须使用如下所示:
objects是Object类项目的列表
red_objects = []
blue_objects = []
green_objects = []
for object in objects:
if object.color == 'red':
red_objects.append(object.name)
elif object.color == 'blue':
blue_objects.append(object.name)
elif object.color == 'green':
green_objects.append(object.name)或者类似这样的东西:
red_objects = [object.name for object in objects if object.color == 'red']
blue_objects = [object.name for object in objects if object.color == 'blue']
green_objects = [object.name for object in objects if object.color == 'green']显然,第二种选择要干净得多,但是我必须分别运行三次循环。有没有某种方法可以将这两种方法结合起来,这样我就只能运行一次循环,但我可以用类似于列表理解的方式创建列表?
发布于 2021-11-24 19:29:47
也许可以使用dict
red_objects, blue_objects, green_objects = [],[],[]
my_dict = {'red': red_objects.append, 'blue': blue_objects.append, 'green': green_objects.append}
for object in objects:
my_dict[object.color](object.name)https://stackoverflow.com/questions/70101852
复制相似问题