按内部“属性”dictionary keyvalu对字典进行排序

2024-09-28 16:57:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我用for循环创建了一个字典,代码是:

players[name] = {'roll_total': player_roll, 'ante': None}

以前我的字典是players={names:totals},我可以使用以下代码对其进行排序:

^{pr2}$

但是现在由于我实现了内部的“attribute”字典,我得到了一个错误,说不能在字典上进行比较。在

TypeError: '<' not supported between instances of 'dict' and 'dict'

那么我如何修改排序方法来比较字典的值(roll_total value),并让我的玩家字典排序呢?在


Tags: 代码namenonefor字典names排序dict
2条回答

这是因为你在比较两者字典。使用公司名称:

players = [(k, players[k]) for k in sorted(players, key=lambda x: players[x]['roll_total'], reverse=True)]

lambda函数接收名为x的密钥,然后根据players[x]['roll\utotal']进行排序,基本上是players[name]['roll\utotal']。在

您也可以将其作为字典理解,然后将其赋给要迭代的字典的变量名。这样,您就保留了字典,并可以在某些逻辑连接处对其进行更改,使其在以后的程序流中按排序可用。例如,您可能希望获胜者开始下一轮,或类似的事情,而不是从列表中创建一个新字典,而是在一个操作中已经有了字典:

{k: players[k] for k in sorted(players, key=lambda x: players[x]['rolltotal'], reverse=True)}

相关问题 更多 >