我正在编写一些代码,要求我获取一个键的下界(为了简单起见,忽略位于集合中最小键之下的键)。在
<>在C++中,使用STD::MAP(作为最可比的数据类型),我只需使用LoeRixBoin()返回迭代器。在我的pythonfo不是很好,但是我猜(如果Python还没有办法做到这一点),这将是lambda函数的一个很好的使用。。。在
检索给定索引的下界键的Pythonic方法是什么?在
如果这个问题太抽象了,这就是我要做的:
我有一个按日期索引的Python dict。我希望能够使用日期来查找dict,并返回与指定键的lowerbound相关联的值。在
代码段如下:
mymap = { datetime.date(2007, 1, 5): 'foo',
datetime.date(2007, 1, 10): 'foofoo',
datetime.date(2007, 2, 2): 'foobar',
datetime.date(2007, 2, 7): 'foobarbar' }
mydate = datetime.date(2007, 1, 7)
# fetch lbound key for mydate from mymap
def mymap_lbound_key(orig):
pass # return the lbound for the key
我真的不想遍历这些键,寻找第一个键<;=提供的键,除非没有更好的替代方法。。。在
当我想要类似于c++映射的东西时,我使用SortedDict。您可以使用
irange
获得一个迭代器,该迭代器指向一个给定键的下界——我认为std::lower_bound
就是这样工作的。在代码:
输出:
^{pr2}$如果date以某种方式重载,它可以比较bisect module。在
最小整数编码示例:
Python的
dict
类没有这个功能;您需要自己编写它。如果这些键已经被排序了,那肯定会很方便,不是吗,这样你就可以对它们进行二进制搜索,避免对它们进行遍历?在这种情况下,我将查看blist
包中的sorteddict
类。http://pypi.python.org/pypi/blist/相关问题 更多 >
编程相关推荐