python 对结构体排序,根据结构体的第二个关键值·排序
时间: 2023-11-22 17:32:44 浏览: 83
可以使用Python内置的sorted函数进行排序。假设结构体列表为lst,结构体有两个关键值,第一个值为a,第二个值为b,可以使用以下代码进行排序:
lst_sorted = sorted(lst, key=lambda x: x.b)
其中,key参数传入一个函数,用于指定排序时的关键值,这里我们使用lambda函数指定第二个值b为关键值。最终排好序的结构体列表存储在lst_sorted中。
相关问题
python 结构体排序
在 Python 中,可以使用 `sorted()` 函数对结构体进行排序。假设我们有一个结构体列表 `struct_list`,其中每个结构体都有一个属性 `value`,我们可以按照 `value` 属性进行排序,代码如下:
```python
sorted_struct_list = sorted(struct_list, key=lambda x: x.value)
```
其中 `key` 参数指定了排序的关键字,这里使用了 lambda 表达式来指定按照 `value` 属性进行排序。
如果要按照多个属性进行排序,可以在 lambda 表达式中返回一个元组,元组中的每个元素表示一个属性,例如:
```python
sorted_struct_list = sorted(struct_list, key=lambda x: (x.value1, x.value2))
```
这样就会先按照 `value1` 属性进行排序,如果 `value1` 相同,则按照 `value2` 属性进行排序。
python 多个结构体排序
在 Python 中,可以使用 `sorted()` 函数对多个结构体进行排序。以下是一个示例代码:
```python
from operator import attrgetter
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
people = [
Person('John', 28),
Person('Bob', 20),
Person('Alice', 32)
]
sorted_people = sorted(people, key=attrgetter('age'))
for person in sorted_people:
print(person.name, person.age)
```
在这个示例中,我们定义了一个 `Person` 类来表示一个人,包括姓名和年龄。我们创建了一个 `people` 列表包含了三个 `Person` 实例。然后,我们使用 `sorted()` 函数对这些实例进行排序,并指定排序的关键字为 `age` 属性。最后,我们遍历排序后的结果并输出每个人的姓名和年龄。
使用 `attrgetter` 函数作为 `key` 参数可以方便地指定需要排序的属性。如果需要按多个属性进行排序,可以将多个属性名作为参数传递给 `attrgetter` 函数,例如:`key=attrgetter('age', 'name')`。