我用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),并让我的玩家字典排序呢?在
这是因为你在比较两者字典。使用公司名称:
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)}
相关问题 更多 >
编程相关推荐