如何使用Python FuzzyWuzzy库匹配元组?

时间:2018-02-22 19:37:05

标签: python fuzzywuzzy

我使用FuzzyWuzzy来匹配字符串,而元组包含两个字符串。例如:

from fuzzywuzzy import fuzz, process
query = "cat"
animals = [('cat','owner1'),('dog','owner3'),('lizard','owner45')]
result = process.extractOne(query, animals, scorer=fuzz.ratio)

此代码返回错误,因为与animals进行比较的列表不是字符串列表。我只想比较元组中的第一项。我希望返回的是:(('cat','owner1), 100),因为它是100%匹配。

以下代码有效,输出('cat', 100)但我需要元组的其他部分。

from fuzzywuzzy import fuzz, process
query = "cat"
animals = ["cat","dog",'lizard']
result = process.extractOne(query, lex, scorer=fuzz.ratio)
print(result)

有什么想法吗?

编辑:我知道我可以获得列表理解的第一个元素列表,但出于内存和速度的原因,我想在不创建新列表的情况下这样做,因为我正在使用大型数据集。 / p>

1 个答案:

答案 0 :(得分:1)

从元组列表中,您可以使用列表推导创建仅包含每个元组的第一项的子列表。

>>> animal_owners = [('cat','owner1'),('dog','owner3'),('lizard','owner45')]
>>> [ao[0] for ao in animal_owners]
['cat', 'dog', 'lizard']

使用这种技术,您可以将第二个表达式替换为只需要动物而只留下原始列表。