我有一个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)
有什么建议吗?
答案 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}}