Bdf*_*dfy 2 python sorting list
列表有结构:
test = [{"title": title, "ratio": ratio, "delta": begin - now()}]
Run Code Online (Sandbox Code Playgroud)
需要按比例(max-> min)和按delta(min-> max)排序后排序?
在排序比较期间,您可以使用这两个键的这两个值作为当前字典的代表.
sorted(test, key=lambda x: (-d['ratio'], d['delta']))
Run Code Online (Sandbox Code Playgroud)
将ratio首先根据降序对它们进行排序,如果值相等,delta则按升序排序.
在这里,我们否定了它的值d['ratio'],因为默认情况下,sorted它按升序排序.由于我们希望最大值ratio处于开头,我们否定该值,以便将最大值ratio视为最小值ratio.(例如在1,10和100之外,在否定值之后,-100将是最小的).
我们希望Python同时使用ratio和delta.所以,我们在元组中返回它们的值.当Python比较两个字典时,它调用key函数并将字典对象作为参数并获得两个元组,并将它们进行比较以确定两者中较小的一个.首先,它比较元组的第一个元素,如果它们相同,那么将比较第二个元素.