我创建了一本词典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