list对象中按属性排序
时间: 2023-10-08 22:06:04 浏览: 61
可以使用 Python 中的 `sorted()` 函数,结合 `key` 参数来实现按对象的某个属性进行排序。例如,如果有一个包含多个对象的列表 `my_list`,每个对象都有一个属性 `my_attr`,可以按照 `my_attr` 进行排序,可以使用以下代码:
```python
sorted_list = sorted(my_list, key=lambda x: x.my_attr)
```
这里使用了匿名函数 `lambda` 来指定排序的 key,`x.my_attr` 表示以对象的 `my_attr` 属性作为排序的依据。如果要按照属性进行倒序排序,可以加上 `reverse=True` 参数:
```python
sorted_list = sorted(my_list, key=lambda x: x.my_attr, reverse=True)
```
这样就可以得到按照属性排序后的列表 `sorted_list`。
相关问题
java中list根据对象属性排序
要对List中的对象按照某个属性进行排序,可以使用Java 8中引入的Comparator接口和Lambda表达式。假设有一个Person类,其中有name和age两个属性,我们要根据age属性对List进行排序,可以这样写:
```
List<Person> personList = new ArrayList<>();
// 添加Person对象到personList中
Collections.sort(personList, Comparator.comparing(Person::getAge));
```
这里使用了Comparator.comparing方法,它接受一个Function类型的参数,用来提取需要比较的属性,这里使用Person::getAge表示提取age属性。如果需要按照多个属性进行排序,可以链式调用comparing方法:
```
Collections.sort(personList, Comparator.comparing(Person::getName).thenComparing(Person::getAge));
```
这里先按照name属性进行排序,如果name相同再按照age属性排序。
C# list 按 对象 属性 排序
可以使用 `List<T>` 的 `Sort` 方法结合 `Comparison<T>` 委托来实现按对象属性排序。
假设有一个名为 `Person` 的类,属性为 `Id` 和 `Name`,我们想要按照 `Id` 属性排序,则可以使用以下代码:
```csharp
List<Person> peopleList = new List<Person>();
// 添加元素到列表
peopleList.Add(new Person { Id = 2, Name = "Tom" });
peopleList.Add(new Person { Id = 1, Name = "Jerry" });
peopleList.Add(new Person { Id = 3, Name = "Lucy" });
// 按照 Id 属性排序
peopleList.Sort((p1, p2) => p1.Id.CompareTo(p2.Id));
// 遍历排序后的列表
foreach (Person p in peopleList)
{
Console.WriteLine($"Id: {p.Id}, Name: {p.Name}");
}
```
输出结果为:
```
Id: 1, Name: Jerry
Id: 2, Name: Tom
Id: 3, Name: Lucy
```
如果想要按照 `Name` 属性排序,则只需要将比较函数中的 `p1.Id.CompareTo(p2.Id)` 改为 `p1.Name.CompareTo(p2.Name)` 即可。