SoFunction
Updated on 2025-04-24

Various ways to sort object lists in Python

1. Understand the sorting requirements

In many application scenarios, we need to sort the object lists so that they can be processed in some order. For example, when working with workflows, we may need to sort them by version number to ensure they are executed or displayed in the correct order.

2. Sort tools in Python

Python provides two main sorting tools:sortedFunctions and listssortmethod.

  • sortedFunction: Return a new list, the original list will not be modified.
  • sortMethod: Sort on the original list without returning any value.

3. Use the sorted function

sortedFunctions are a very flexible tool that allows us to passkeyParameters specify the basis for sorting. Here is a usesortedFunction pairs containversion_numberAttributesworkflowsExample of sorting lists:

# Assume workflows is a list containing Workflow objects# And the Workflow object has a version_number property
# Use sorted function to sortsorted_workflows = sorted(
    workflows,
    key=lambda x: int(x.version_number[1:]),  # Remove 'V' and convert the remainder into integers    reverse=True  # Inverse order)

In this example, we use the lambda function as the key parameter to define the basis for sorting. lambda x: int(x.version_number[1:]) This expression removes the first character (i.e. V) of the version_number string and converts the remaining part into an integer, so that you can sort it according to the numerical size. The reverse=True parameter means we want to arrange it inversely.

4. Use the sort method of the list

If you want to sort on the original list, you can use the list'ssortmethod. This method will not return any value, but will directly modify the original list. Here is an example:

# Or use the sort method of the list to sort directly on the original list(
    key=lambda x: int(x.version_number[1:]),  # Remove 'V' and convert the remainder into integers    reverse=True  # Inverse order)

5. Customization of sorting by

In the above example, we usedlambdaFunctions customize the sorting basis.lambdaFunctions are a concise and anonymous function that is very suitable for use inkeyparameter. In this example, welambdaThe function removes the first character of the version string and converts it to an integer for numerical comparison.

6. Handle non-standard formats

In practical applications,version_numberAttributes may contain non-numeric characters or not in line with the expected format. Before trying to convert it to an integer, we need to make sure that these values ​​are as expected. If there are values ​​that do not match the format, attempting to convert to an integer will result in an error. Therefore, in practical applications, we may need to add an error handling mechanism, such as:

def get_version_number(version_str):
    try:
        return int(version_str[1:])
    except (ValueError, IndexError):
        return float('inf')  # Treat version numbers that do not match the format as maximum
# Use custom functions as keysorted_workflows = sorted(
    workflows,
    key=get_version_number,
    reverse=True
)

In this example, we define a get_version_number function to handle the version number string. If the strings do not meet the expected format, we treat them as the maximum value so that they are sorted to the end of the list.

7. The practical application of sorting

Sorting has a wide range of applications in software development. For example, in version control, we need to sort the code submissions by version number; in project management, we need to sort the tasks by priority; in data analysis, we need to sort the data by numerical size. By mastering the sorting skills in Python, we can handle these scenarios more efficiently.

The above is the detailed content of the various ways to sort object lists in Python. For more information on sorting Python object lists, please pay attention to my other related articles!