检查单词是否在元组列表中

时间:2014-12-01 23:15:09

标签: python python-3.x

我想知道如何有效地检查一个值是否在给定的元组列表中。说我有一个清单:

("the", 1)
("check", 1)
("brown, 2)
("gary", 5)

如何检查给定单词是否在列表中,忽略元组的第二个值?如果只是一个词我可以使用

if "the" in wordlist:
   #...

但这不起作用,我能做什么就行了?

if ("the", _) in wordlist:
   #...

5 个答案:

答案 0 :(得分:8)

可以使用哈希

>>> word in dict(list_of_tuples)

答案 1 :(得分:4)

使用any

if any(word[0] == 'the' for word in wordlist):
    # do something

答案 2 :(得分:1)

for tupl in wordlist:
    if 'the' in tupl:
        # ...

答案 3 :(得分:1)

列表中单词的查找将是O(n)时间复杂度,因此列表中的单词越多,查找速度越慢。为了加快速度,您可以按字母顺序对列表进行排序,然后使用二进制搜索 - 搜索单词变为log(N)复杂度,但最有效的方法是使用散列与集合结构:

'the' in set((word for word, _ in a))

O(1),与集合中的单词数无关。顺便说一句,它保证了单词中只有一个实例在结构中,而list可以保存尽可能多的“the”。 Set应该构造一次,用.add方法添加单词(添加新单词也是O(1)复杂度)

答案 4 :(得分:0)

words,scores = zip(*wordlist)

将单词列表拆分为单词列表和分数列表,然后

print "the" in words