![](/img/trans.png)
[英]If dict2 value = dict1 key, replace entire dict2 value with dict1 value
[英]Find value of dict1 key1 when given dict1 key2?
我想從字典的鍵'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]
有什么更好的解決方案?
您可以這樣做:
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
在內部完成)不是一個理想的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.