我創建了一本詞典myDict
,它擁有以下形式的1000萬個條目。字典中的每個條目表示{(id, age): code}
從字典中提取值。鍵上的範圍匹配
>>> myDict = {('1039', '68.0864'): '42731,42781,V4501',
('1039', '68.1704'): '4770,4778,V071',
('0845', '60.4476'): '2724,27800,4019',
('0983', '63.3936'): '41401,4168,4240,V1582,V7281'
}
恆定ageOffset
與值定義= 0.1
給定一個(id,age)
元組,如何可以取的所有值從myDict
具有鍵(id, X)
其中:
age <= X <= age+ageOffset
我需要執行這個獲取操作200億次。
Examples:
1.
myTup = ('1039', '68.0')
the answer is: '42731,42781,V4501'
2.
myTup = ('0845', '60.0')
Ans : No value returned
編輯: 我可以創建一個子字典,部分匹配的關鍵的第一個元素的基礎上。我的意思是,如果元組鍵的第一個元素匹配,則創建一個子字典。根據我的數據,這不會超過幾百。然後執行線性範圍搜索,比較元組鍵中的第二個元素並查找相應的值。
你可以使用其他數據結構來優化這個嗎?我認爲改變它可以提高性能並使其易於解決 – llazzaro 2013-02-20 15:21:21
「*給定一個'(id,age)'tuple *」 - 是否對您查找的年齡有限制?它總是整體嗎?總是「.1」的倍數? – 2013-02-20 15:23:09
我同意@llazzaro,如果你打算這樣做200億次,你應該重新考慮數據結構並使用numpy。 – reptilicus 2013-02-20 15:25:35