簡體   English   中英

給定dict1 key2時查找dict1 key1的值?

[英]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']

我會找到一個更快的編輯距離實現,因為調用SequenceMatcherget_close_matches在內部完成)不是一個理想的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM