排序字典并将键放入数组中

时间:2018-06-14 18:57:13

标签: python arrays sorting dictionary

我有一个dict,我想按他们的价值观排序。之后我希望将键的顺序放在一个数组中。我尝试了一些代码,但如果它按值排序,或者按键按键排序,则只输出值。 这是我的命令:

{0: 1.0, 1: 22.0, 2: 30.0, 3: 8.0, 4: 17.0, 5: 9.0, 6: 13.0, 7: 21.0, 8: 
24.0, 9: 18.0, 10: 14.0, 11: 2.0, 12: 20.0, 13: 23.0, 14: 19.0, 15: 15.0, 16: 
6.0, 17: 26.0, 18: 11.0, 19: 5.0, 20: 29.0, 21: 7.0, 22: 12.0, 23: 27.0, 24: 
25.0, 25: 16.0, 26: 3.0, 27: 4.0, 28: 28.0, 29: 10.0}

应该返回这样的内容:

[0,11,26,27,19,16, etc]

2 个答案:

答案 0 :(得分:1)

鉴于你的字典d

result = sorted(d, key=d.get)
没有sorted(d)参数的

key将遍历d中的键,从中创建一个列表并使用自然排序顺序返回。 (它迭代键,因为这是字典的正常迭代。)key参数允许您传入一个函数,该函数返回一个代理值以对每个项目进行排序。排序后,代理值将被丢弃,您只需获取要排序的项目。 key=d.get使用原始字典查找与每个项目关联的值。

答案 1 :(得分:-1)

这可能会有所帮助:

def get_keys_ordered_using_values(data):
    return list(map(lambda y: y[0], sorted(data.items(), key=lambda x: x[1])))

my_data = {0: 1.0, 1: 22.0, 2: 30.0, 3: 8.0, 4: 17.0, 5: 9.0, 6: 13.0, 7: 21.0, 
           8: 24.0, 9: 18.0, 10: 14.0, 11: 2.0, 12: 20.0, 13: 23.0, 14: 19.0, 15: 15.0, 
        16: 6.0, 17: 26.0, 18: 11.0, 19: 5.0, 20: 29.0, 21: 7.0, 22: 12.0, 23: 27.0, 
        24: 25.0, 25: 16.0, 26: 3.0, 27: 4.0, 28: 28.0, 29: 10.0}

print(get_keys_ordered_using_values(my_data))
相关问题