How to sort with lambda in Python

前端 未结 4 1514
感情败类
感情败类 2020-11-30 19:41

In Python, I am trying to sort by date with lambda. I can\'t understand my error message. The message is:

() takes exactly 1 argument (2 given         


        
4条回答
  •  野趣味
    野趣味 (楼主)
    2020-11-30 20:28

    You're trying to use key functions with lambda functions.

    Python and other languages like C# or F# use lambda functions.

    Also, when it comes to key functions and according to the documentation

    Both list.sort() and sorted() have a key parameter to specify a function to be called on each list element prior to making comparisons.

    ...

    The value of the key parameter should be a function that takes a single argument and returns a key to use for sorting purposes. This technique is fast because the key function is called exactly once for each input record.

    So, key functions have a parameter key and it can indeed receive a lambda function.

    In Real Python there's a nice example of its usage. Let's say you have the following list

    ids = ['id1', 'id100', 'id2', 'id22', 'id3', 'id30']
    

    and want to sort through its "integers". Then, you'd do something like

    sorted_ids = sorted(ids, key=lambda x: int(x[2:])) # Integer sort
    

    and printing it would give

    ['id1', 'id2', 'id3', 'id22', 'id30', 'id100']
    

    In your particular case, you're only missing to write key= before lambda. So, you'd want to use the following

    a = sorted(a, key=lambda x: x.modified, reverse=True)
    

提交回复
热议问题