python - 按值的长度和按字母顺序排序字典

时间:2018-04-25 19:10:15

标签: python sorting dictionary

我有一本字典:

db = {'Carl': [('Intel', 30, 40), ('Dell', 20, 50), ('Intel', -10, 60), ('Apple', 20, 55)], 'Barb': [('Intel', 20, 40), ('Intel', -10, 45), ('IBM', 40, 30), ('Intel', -10, 35)], 'Alan': [('Intel', 20, 10), ('Dell', 10, 50), ('Apple', 80, 80), ('Dell', -10, 55)], 'Dawn': [('Apple', 40, 80), ('Apple', 40, 85), ('Apple', -40, 90)]}

和一个带有dict参数的函数:

def frequent_traders(db : {str: [(str,int,int)]}) -> [str]:
    client_names = list()

    for k in sorted(db, key = lambda k:len(db[k]), reverse = True):
        client_names.append(k)

    return client_names

我想根据值的长度按递减顺序返回键列表。我在上面的函数中已经这样做了,但是如果它们具有相同的值,我不确定如何按字母顺序递增它们。

1 个答案:

答案 0 :(得分:2)

sorted(db, key = lambda k: (-len(db[k]), k))