这就是我在python中搜索对象的方式。有没有更有效(更快,更简单)的方式呢?
Obs:A是已知对象。
for i in Very_Long_List_Of_Names:
if A == My_Dictionary[i]:
print: "The object you are looking for is ", i
break
答案 0 :(得分:1)
一个班轮将是:(i for i in List_of_names if A == My_dictionary[i]).next()
。
如果KeyError
中的某个项目不是List_of_names
中的某个键,则会引发My_dictionary
StopIteration
如果找不到该项,则会引发{{1}},否则返回找到A的钥匙。
答案 1 :(得分:0)
我假设您正在寻找Python字典值中的对象。
如果您只是想检查它的存在(例如,您并不真正关心哪个键映射到该值),您可以这样做:
if A in My_Dictionary.values():
print "The object is in the dictionary"
否则,如果您确实想要获取与该值相关联的密钥:
for k, v in My_Dictionary.iteritems():
if v == A:
print "The object you are looking for is ", k
break
编辑:请注意,您可以在同一个词典中使用相同值的多个键。上面的代码只能找到第一次出现。不过,它确实胜过拥有大量名单。 : - )
答案 2 :(得分:0)
在我看来,如果你正在搜索所有寻找特定值的键,那么你就错误地使用了字典。
如果A
可以播放,则将A存储在字典中,其值为i
。
d = {A: 'a_name'}
如果My_Dictionary
不是很大并且可以轻松地适应内存,并且A
是可以清除的,那么,从中创建一个重复的字典:
d = dict((value, key) for key, value in My_Dictionary.iteritems())
if A in d:
print "word you're looking for is: ", d[A]
否则,您将不得不迭代每个键:
for word, object_ in My_Dictionary.iteritems():
if object_ == A:
print "word you're looking for is: ", word