问题描述: 我想比较两个包含自定义对象的列表,但结果与我的预期不符。我希望按照词典排序的方式进行比较。现在我需要解决这个问题,并提供相关的代码示例。
解决方法:
要按照词典排序的方式比较两个包含自定义对象的列表,可以使用Python的sorted()
函数和key
参数。key
参数可以接受一个函数,用于指定用于比较的键值。在这个函数中,我们需要定义自定义对象的比较逻辑。
下面是一个示例代码,演示了如何使用sorted()
函数和key
参数来比较两个包含自定义对象的列表:
class CustomObject:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"CustomObject(name='{self.name}', age={self.age})"
# 创建自定义对象的列表
list1 = [
CustomObject('John', 25),
CustomObject('Alice', 30),
CustomObject('Bob', 20)
]
list2 = [
CustomObject('Bob', 20),
CustomObject('Alice', 30),
CustomObject('John', 25)
]
# 定义比较函数,按照name属性进行比较
def compare_objects(obj):
return obj.name
# 按照name属性进行排序
sorted_list1 = sorted(list1, key=compare_objects)
sorted_list2 = sorted(list2, key=compare_objects)
# 输出排序后的列表
print(sorted_list1)
print(sorted_list2)
运行上述代码,输出结果为:
[CustomObject(name='Alice', age=30), CustomObject(name='Bob', age=20), CustomObject(name='John', age=25)]
[CustomObject(name='Alice', age=30), CustomObject(name='Bob', age=20), CustomObject(name='John', age=25)]
可以看到,两个列表按照name属性进行了排序,得到了预期的结果。你可以根据自己的需求,在比较函数中定义自定义对象的比较逻辑,按照不同的属性进行排序。