2016-01-11 16 views
7

Trong Python, làm thế nào tôi có thể ánh xạ từ một loạt các giá trị cho một giá trị cụ thể? Về cơ bản, tôi muốn có một từ điển, mà tôi có thể lấp đầy với các phạm vi và chỉ số với những con số:điển với phạm vi như chìa khóa

rd = rangedict() 
rd[(0, 10)] = 5 
print rd[4] # prints 5 
print rd[6] # prints 5 
rd[(5, 15)] = 20 
print rd[4] # prints 5 
print rd[6] # prints 20 
+1

Một google nhanh chóng sử dụng 'khoảng' chứ không phải 'phạm vi' dẫn đến https: // đang .google.com/p/intervalmap/và http://joshuakugler.com/archives/30-BetweenDict,-a-Python-dict-for-value-ranges.html –

+0

(1) không cho phép ghi đè. (2) Sử dụng tìm kiếm tuyến tính thay vì băm hiệu quả, không cập nhật giá trị. Cả hai đều không giải quyết các yêu cầu tôi đã nêu trong câu hỏi. – knub

+0

Câu hỏi, ở dạng hiện tại của nó, không xuất hiện ngoài chủ đề cho stackoverflow. – user4815162342

Trả lời

0

Nhờ các ý kiến ​​tôi có thể tìm thấy một giải pháp sử dụng các gói intervaltree.

from intervaltree import IntervalTree 

tree = IntervalTree() 
tree.addi(0, 10, 5) 
print tree[4] 
print tree[6] 

# need to chop before, as the library stores both intervals otherwise 
tree.chop(5, 15) 
tree.addi(5, 15, 20) 
print tree[4] 
print tree[6] 
Các vấn đề liên quan