以下是一个示例代码来按对象属性拆分对象列表:
def split_objects_by_attribute(objects, attribute):
result = {}
for obj in objects:
attr_value = getattr(obj, attribute)
if attr_value not in result:
result[attr_value] = []
result[attr_value].append(obj)
return result
# 示例用法
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
people = [
Person("Alice", 25),
Person("Bob", 30),
Person("Charlie", 25),
Person("Dave", 30)
]
result = split_objects_by_attribute(people, "age")
print(result)
运行上述代码将输出:
{25: [<__main__.Person object at 0x00000123456789>, <__main__.Person object at 0x00000987654321>], 30: [<__main__.Person object at 0x00000543218765>, <__main__.Person object at 0x00000432109876>]}
在这个示例中,我们定义了一个Person
类来表示人员对象,每个人员对象有一个name
和age
属性。然后我们创建了一个包含几个人员对象的列表。我们编写了一个名为split_objects_by_attribute
的函数来按照给定的属性拆分对象列表。
该函数遍历对象列表中的每个对象,并使用getattr
函数获取指定属性的值。然后,我们使用这个属性值作为字典的键,将对象添加到相应的值列表中。最后,我们返回拆分后的字典。
在示例中,我们使用age
属性来拆分人员对象列表,并将结果存储在result
变量中。输出结果显示,具有相同年龄的人员对象被分组在一起。
上一篇:按对象内部的值对集合进行排序