如何在Python中多列表的词典列表?

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)排序后排序?

the*_*eye 6

在排序比较期间,您可以使用这两个键的这两个值作为当前字典的代表.

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同时使用ratiodelta.所以,我们在元组中返回它们的值.当Python比较两个字典时,它调用key函数并将字典对象作为参数并获得两个元组,并将它们进行比较以确定两者中较小的一个.首先,它比较元组的第一个元素,如果它们相同,那么将比较第二个元素.