如何先按值再按键对字典排序

2024-10-02 02:43:38 发布

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

我有一本字典

d={'g':1,'w':1,'h':3}

首先,我想对值排序,然后按键排序,所以最终输出应该如下所示

d={'h':3,'g':1,'w':1}


Tags: 字典排序按键对值
2条回答

从python3.6开始,dict是有序的,但是为了确保需要使用来自collections模块的OrderedDict

from collections import OrderedDict

d={'g':1,'w':1,'h':3}

o = OrderedDict(sorted(((k, v) for k, v in d.items()), key=lambda v: (-v[1], v[0])))
print(o)

输出:

OrderedDict([('h', 3), ('g', 1), ('w', 1)])

使用Python 2,您可以通过自定义cmp函数来实现这一点:

def compare(a,b):
  if a[1] < b[1]:
    return 1
  elif a[1] > b[1]:
    return -1
  else:
    if a[0] < b[0]:
      return -1
    elif a[0] > b[0]:
      return 1
    else:
      return 0

d={"h":3,"g":1,"w":1}
items = d.items()
items = sorted(items, cmp=compare)
print items

相关问题 更多 >

    热门问题