根据嵌套dict中的值对列表进行排序

时间:2018-02-20 11:02:49

标签: python list dictionary

我有一个嵌套的dict,我希望根据一个嵌套值name得到一个基本键的排序列表(A-Z)。

my_dict: {
    'RED':{'name':'Pen', 'number':5},
    'YEL':{'name':'Dog', 'number':1},
    'BLU':{'name':'Ball', 'number':3}
}

示例的正确输出为:

my_list = ['BLU', 'YEL', 'RED']

目前,我有一个丑陋的解决方案,它依赖于代码总是3个字符长。

my_list = []
for code in my_dict:
    my_list.append(my_dict[code]['name'] + code)
my_list = sorted(my_list)
my_list = [x[-3:] for x in my_list]

1 个答案:

答案 0 :(得分:3)

您可以使用key函数的sorted参数:

my_dict = {
    'RED':{'name':'Pen', 'number':5},
    'YEL':{'name':'Dog', 'number':1},
    'BLU':{'name':'Ball', 'number':3}
}

my_list = sorted(my_dict, key = lambda x: my_dict[x]['name'])

print(my_list)

输出:

['BLU', 'YEL', 'RED']