Python字典:有什么方法可以检查“相似”键吗?

2024-04-29 19:41:43 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个字典和一些键:值对。除了重新定义字典,有没有办法检查某个东西是否与字典中的某个键相似?你知道吗

例如

items = [ 'green apple', 'yellow pepper', 'green pepper', 'red pepper' ] 
fruitsandveggies = { 'apple': 2, 'banana': 5, 'pepper': 6}
for item in items:        
    if item is similar to some key in fruitsandveggies ('green apple' is similar to 'apple',
    set qty = value of that key 
    then print that qty

为了澄清一些问题,我所说的相似只是在字符串中包含“key”。所以‘蟹状苹果’、‘青苹果’、‘华盛顿苹果’都含有‘苹果’,这是其中的关键。你知道吗


Tags: tokeyin苹果apple字典thatis
2条回答

您可以使用^{},它将返回序列相似性的度量值,作为[0, 1]范围内的浮点值。你知道吗

max函数:

>>> fruitsandveggies = { 'apple': 2, 'banana': 5, 'pepper': 6}
>>> max(fruitsandveggies.items(),key=lambda (i,j):difflib.SequenceMatcher(None, i,'green apple').ratio())
('apple', 2)

如果您只想获取值,请使用一个简单的索引([1]

如果我理解正确,我想这就是你想做的:

import re

items = [ 'green apple', 'yellow pepper', 'green pepper', 'red pepper' ] 
fruitsandveggies = { 'apple': 2, 'banana': 5, 'pepper': 6}
for key in fruitsandveggies.keys():
    fruitsandveggies[key] = 0
    for item in items:
        if re.search(key, item): # if it finds the key string in the item
            fruitsandveggies[key] += 1
    #print str(fruitsandveggies[key]) + ' ' + key #python 2
    print(str(fruitsandveggies[key]) + ' ' + key) #python 3

它会打印出来

3胡椒粉 1个苹果 0香蕉

在这个例子中

相关问题 更多 >