首页 > 解决方案 > 用另一本字典排序字典

问题描述

因此,假设我有一个 dic,其中键是玩家,值是游戏数量。

dic1 = {player1: 100, 
        player2: 4, 
        player3: 400, 
        player4: 50
       }

假设现在我将对这个 dic 进行排序

dic1_sorted = dict(sorted(dic1.items(), key=lambda item: item[1], reverse=True))

我会得到这个

dic1_sorted = {player3: 400,
               player1: 100,
               player4: 50,
               player2: 4
              }

所以假设我有一个新的 dic,其中键是玩家,值是胜率。

dic2 = {player1: 1,
        player2: 0.5,
        player3: 0.7,
        player4: 0.2

dic2_sorted = {player3: 0.7,
               player1: 1,
               player4: 0.2,
               player2: 0.5
              }

我怎样才能实现 dic2_sorted,它是由 dic1_sorted 排序的,而不使用 panda 和类似的东西,并且以尽可能有效的方式?

标签: pythonpython-3.xdictionary

解决方案


在排序时从一个字典中查找另一个字典的键,我在-这里使用来反转顺序,但reverse=True可能更可取(我将您的播放器转换为字符串只是为了说明)

dic1_sorted = {"player3": 400,
               "player1": 100,
               "player4": 50,
               "player2": 4
              }

dic2 = {"player1": 1,
        "player2": 0.5,
        "player3": 0.7,
        "player4": 0.2}

print(sorted(dic2.items(), key = lambda x: -dic1_sorted[x[0]]))
# [('player3', 0.7), ('player1', 1), ('player4', 0.2), ('player2', 0.5)]

推荐阅读