我有一个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]
答案 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))