代码之家  ›  专栏  ›  技术社区  ›  Matt Whitehead

python按降序值排序字典,然后按字母顺序按键排序

  •  4
  • Matt Whitehead  · 技术社区  · 8 年前

    我有以下字典:

    fruits = {
        "apple": 5,
        "Apple": 5,
        "orange": 5,
        "strawberry": 3,
        "blueberry": 1
    }
    

    我需要打印出两个具有最高值的键的列表。领带需要按字母顺序a-z断开,大写字母优先于小写字母。按计数运行以下排序,但不会破坏关系:

    popular_fruits = sorted(fruits, key=fruits.get, reverse=True)
    print(popular_fruits[0:2])
    

    我怎样才能做到这一点?

    2 回复  |  直到 7 年前
        1
  •  8
  •   taras Hardik Kamdar    8 年前

    popular_fruits = sorted(fruits, key=lambda x: (-fruits[x], x))
    print(popular_fruits[0:2])
    

    以前的否定 fruits[x] 如果是并列,则顺序由元组的第二个参数决定(按字母顺序)。

    sorted(fruits, key=lambda x: (fruits[x], x), reverse=True) 因为它将反转两个元组元素的顺序,但我们只需要对第一个元素进行排序。

        2
  •  3
  •   Zev    8 年前

    这是错误的,尽管它得到了一些赞成票:

    popular_fruits = sorted(fruits, key = lambda x: (-1 * x[1], x[0]))
    
    # ['Apple', 'apple']
    

    popular_fruits = sorted(fruits, key = lambda x: (-fruits[x], x))
    

    dict 用于列表/元组列表。