Tôi rùng mình khi nghĩ đến việc chậm này sẽ được trên một danh sách các kích thước, nhưng chỉ cách tôi đã đi lên với cho đến nay ...
>>> foo.items()[foo.keys().index('apple') + 1]
('banana', 3)
Edit:
Các ví dụ hơi hơi giả tạo; bộ sưu tập thực tế của tôi được khóa theo ngày. Nếu tôi cần mục nhập sau today
; tìm thấy một giải pháp bằng cách sử dụng dropwhile ...
>>> foo = OrderedDict([(datetime.date(2000,1,1), 4), (datetime.date(2000,5,23), 3), datetime.date(2000,10,1), 2), (datetime.date(2000,12,31), 1)])
>>> today = datetime.date(2000,1,30)
>>> foo.items()[foo.keys().index((itertools.dropwhile(lambda d: d<today, foo)).next())]
(datetime.date(2000, 5, 23), 3)
Khá một chút.
Nguồn
2012-09-08 05:19:19
'OrderedDict' có vẻ là quá đơn giản cho việc này. Có lẽ một lớp lót khủng khiếp sẽ hoạt động? 'foo [(phím lambda: phím [(keys.index ('lê') + 1)% len (phím)]) (foo.keys())]' – Blender