我有一张表格
myNestedDict=collections.defaultdict(dict)
示例数据:
{'509582':{'509533': 65.499},
'509583':{'509534': -35.499},{'509568': -325.499},
'509584':{'509576': 0},{'509576': -1337} }
我试图让它返回与每个最小n个值相关联的两个键。
所以对于这个例子,如果我正在寻找2个最小的:heapq.nsmallest(2,myNestedDict,key = ???)
我想返回字典:
{'509584':{'509576': -1337},
'509583':{'509568': -325.499} }
或者,我实际上不再需要该值,因此如果更容易,它可以返回非嵌套字典:
{'509584':'509576',
'509583':'509568'}
正如您所看到的,我无法找出heapq.nsmallest的正确密钥设计来对最里面的值进行排序。任何帮助非常感谢。感谢
注意 - 这本词典有数百万条记录,因此效率很重要。
编辑 - 这就是我实际运行的东西,但它只在第一个键上排序,我需要对最里面的值进行排序。请注意,他们说itemgetter对于这个数百万字典的字典来说比lambda更快
heapq.nsmallest(2,myNestedDict.items(),key = itemgetter(0))
答案 0 :(得分:0)
我通过使用列表推导将我的嵌套字典转换为元组列表然后使用heapq.nsmallest(2,myTupleList,key = itemgetter(2))来解决这个问题。
性能是可管理的,因为将字典转换为100万行示例的列表只需0.5秒。