heapq nsmallest字典键排序

时间:2015-11-03 09:15:30

标签: python sorting dictionary

我有一个innested字典,例如

>>> d={
    'out_key': {'aa1':2, 'aa2':3, 'a1':5, 'aa0':2, 'b':1}
}

从这个词典中我想要最小值的第一个n键。为了做到这一点,我知道我可以这样使用heap.nsmallest

>>> import heapq
>>> smallest_2 = heapq.nsmallest(2,d['out_key'],key=d['out_key'].get)
>>> smallest_2
['b', 'aa1']

但是在key我想添加一个条件,即将密钥排序。那样smallest_2=['b', 'aa0]。 (注意smallest_2不需要排序。)

我的第一次(失败)尝试是将key=f设置为

f = lambda x: sorted(x['out_key].get)

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

在你的第一次(失败)尝试中,你错误地思考它,你应该使用key heapq.nsmallest() >>> d={ ... 'out_key': {'aa1':2, 'aa2':3, 'a1':5, 'aa0':2, 'b':1} ... } >>> >>> import heapq >>> >>> heapq.nsmallest(2,d['out_key'],key=lambda x: (d['out_key'].get(x),x)) ['b', 'aa0'] 参数的值和键。示例 -

{{1}}