当给定dict1键2时,是否查找dict1键1的值?

2024-04-25 18:18:01 发布

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

我想从字典的键'haz'中获取值,它的'foo'的值最接近'barn'。你知道吗

以下是我的低效解决方案:

data = [{'foo': 'bar', 'haz': 'bzr'}, {'foo': 'zoo', 'haz':'bnr'}]

from difflib import get_close_matches

closest = get_close_matches('barn', [elem['foo'] for elem in data])
print 'result =', [elem['haz'] for elem in data if elem['foo']==closest[0]][0]

什么是更好的解决方案?你知道吗


Tags: inforclosedataget字典foobar
1条回答
网友
1楼 · 发布于 2024-04-25 18:18:01

你可以做:

from difflib import SequenceMatcher
from functools import partial
from operator import itemgetter

data = [
    {'foo': 'bar', 'haz': 'bzr'},
    {'foo': 'zoo', 'haz': 'bnr'},
    {'foo': 'potato', 'haz': 'test'}
]

matcher = partial(SequenceMatcher, 'barn')  # I'd find a better distance function
pairs = enumerate(map(itemgetter('foo'), data))  # Constructs index, value pairs

index, value = sorted(pairs, key=lambda x: matcher(x[1]).ratio())[0]

print data[index]['haz']

我会发现一个更快的编辑距离实现,因为调用SequenceMatcher(内部调用get_close_matches)不是一个理想的解决方案。你知道吗

相关问题 更多 >