@mglison是对的.因为OrderedDict遵循迭代器协议,所以保证按照list()的正确顺序生成密钥:
但是,就像@mglison也提到的那样,itertools.islice()比使用list和subscripting更好,更有效.在使用timeit模块对这两种方法进行多次计时之后,itertools方法的速度大约快了2倍.以下是确切的数字:
获得运行两个列表的平均时间(itertools.islice(rows,2))和list(rows.keys())[:2](注意我将islice()的结果转换为列表)多次,似乎使用后一种方法实际上稍快一点:
---------------------------------------------------------------
| list(itertools.islice(rows, 2)) | 1.5023668839901838 |
---------------------------------------------------------------
| list(rows.keys())[:2] | 1.495460570215706 |
---------------------------------------------------------------
但是,这两个数字的差异是如此之小,我真的不会对你使用哪种方法产生太大影响.只需选择对您的具体情况最具可读性和可理解性的方法.