python-按值的长度和字母顺序对字典进行排序
我有一本字典:python-按值的长度和字母顺序对字典进行排序,python,sorting,dictionary,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),
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
我想根据键值的长度按降序返回键列表。我已经在上面的函数中这样做了,但是如果它们的值长度相同,我不确定如何按字母顺序递增返回它们。查看Python排序教程;您需要使用字母顺序作为辅助键。@pissall-but
list
是有序的,这就是他正在构建的。事实上,频繁交易者
:要将无序的dict
转换为有序的列表
@pissall,我已经在函数中按长度对键进行了排序,并在列表中返回了它们。有些键的长度相同,我想按字母顺序排列。查看Python排序教程;您需要使用字母顺序作为辅助键。@pissall-butlist
是有序的,这就是他正在构建的。事实上,频繁交易者
:要将无序的dict
转换为有序的列表
@pissall,我已经在函数中按长度对键进行了排序,并在列表中返回了它们。有些钥匙的长度相同,我想按字母顺序排列
sorted(db, key = lambda k: (-len(db[k]), k))