在不知道完整名称的情况下如何在字典中查找键
我有一个字典,其中有一个键是以“ev”开头,后面跟着一些我事先不知道的数字(用####表示)。这个字典里只有一个这样的键,而且没有其他键是以“ev”开头的。
那么,怎么才能在不知道这个数字是什么的情况下,干净利落地访问到这个键呢?
3 个回答
0
首先,把这个项目存储在字典里时,不要加上ev
这个前缀。
如果你还需要用这个前缀来访问它,那就两种方式都存储一下。
如果一个数字可能有多个前缀,那就用第二个字典来存储每个数字对应的实际键,可以用列表或者子字典的方式来存,这样就能找到主字典里与这个数字匹配的可用键。
如果在最开始创建字典的时候不容易做到这一点(比如说,字典是别人写的代码给你的,你不能改动它),而且你需要进行很多这样的查找,那就值得花时间遍历一次字典,创建第二个字典,或者用一个字典来缓存这些查找,或者类似的做法,这样就不用每次都遍历键了。
0
如果字典里只有一个这样的值,我觉得用下面这种方法会更好:
for k,v in d.iteritems():
if k.startswith('ev'):
result = v
break
else:
raise KeyError() # or set to default value
这样的话,你就不需要遍历字典里的每一个值,只需要找到那个键就行了,这样平均能把计算速度提高大约两倍。