【发布时间】:2013-03-07 16:14:59
【问题描述】:
假设我有一本字典
{1:5, 2:5, 4:5}
是否有这样的数据结构,如果我添加键值对3:5,将其输入字典以便键按排序顺序?即
{1:5, 2:5, 3:5, 4:5}
我知道collections.OrderedDict(),但这只会使键保持添加顺序(目前这对我来说还不够)。
我不想使用普通字典dic = {},然后必须使用sorted(dic)[0] 来抓取最小的键。我宁愿有 sorted_dict[0] 类型的函数。
这样做的原因是,如果我使用普通字典,我将不得不多次调用排序,因为我会不断地将对添加到我的字典中。
编辑:我应该提到,它不仅是我关心的最小和最大键,我还需要定期打印这本字典......
【问题讨论】:
-
以我的技能水平,我自己的课会比 sorted(dict) 还要慢!! :(
-
你需要这个的用例是什么(你试图解决的实际问题)。
-
一个金融市场应用程序,键是价格,值是该价格的交易量。随着新数据的到来,我必须更新我的字典,并且我想在我的脚本中多次找出最好和最差的价格及其数量。
-
@RedBaron: 每次他需要最小的键时都是 O(N),每次他需要最大的键时都是 O(N),当然每次都是 O(N log N)他需要打印整件事。他在问题中明确表示这是不可接受的。
-
具体来说,Alex Martelli 对此问题有一个nice answer
标签: python dictionary key sorted