搜索对象

时间:2011-03-09 10:09:04

标签: python

这就是我在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

3 个答案:

答案 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