python中字典的多因素排序

2024-04-16 18:55:51 发布

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

我有两个字典,都有相同的索引,但是值不同。我想要的是按值排序的第一个dict的键列表。如果出现平局,则应优先选择第二条中数值较高的条目。在这两种词典中,值越高越好

示例:

node_degree = {1: 4, 2: 5, 3: 2, 4: 4, 5: 2}
node_volumes = {1: 100, 2: 200, 3: 300, 4: 400, 5: 500}

我可以按如下值对node\u degree字典排序:

degree_list = sorted(node_degree, key=node_degree.get, reverse=True)

这将产生[2, 1, 4, 3, 5]。然而,条目1和条目4具有相同的值(4),并且在第二列表node_volumes中,节点1(100)的值低于节点4(400)的值。节点3和5也是如此。因此,结果实际上应该是:

sortFunction(node_degree, node_volumes) = [2, 4, 1, 5, 3]

如何做到这一点?你知道吗


Tags: node示例列表字典节点排序条目dict
1条回答
网友
1楼 · 发布于 2024-04-16 18:55:51

这将基于第一个和第二个dict的值的元组进行排序:

degree_list = sorted(
    node_degree,
    key=lambda k: (node_degree[k], node_volumes[k]),
    reverse=True,
)

相关问题 更多 >