私は疑問に思っていました:(特定の文字列に対して複数のエントリがない限り)不完全なキーで dict 値にアクセスすることは可能でしょうか? 例えば:
my_dict = {'name': 'Klauss', 'age': 26, 'Date of birth': '15th july'}
print my_dict['Date']
>> '15th july'
これは可能ですか?どうすればそれができますか?
私は疑問に思っていました:(特定の文字列に対して複数のエントリがない限り)不完全なキーで dict 値にアクセスすることは可能でしょうか? 例えば:
my_dict = {'name': 'Klauss', 'age': 26, 'Date of birth': '15th july'}
print my_dict['Date']
>> '15th july'
これは可能ですか?どうすればそれができますか?
最善の解決策ではありません。改善できます (getitem をオーバーライドします)。
class mydict(dict):
def __getitem__(self, value):
keys = [k for k in self.keys() if value in k]
key = keys[0] if keys else None
return self.get(key)
my_dict = mydict({'name': 'Klauss', 'age': 26, 'Date of birth': '15th july'})
print(my_dict['Date'])# returns 15th july
pywinauto には「ファジー」辞書の素晴らしく賢い実装があります。これは、ここで必要なものに最適かもしれません。
https://code.google.com/p/pywinauto/source/browse/pywinauto/fuzzydict.py
ドキュメントはこちら: http://pywinauto.googlecode.com/hg/pywinauto/docs/code/pywinauto.fuzzydict.html
(編集: ただし、特にキーの先頭から一致させたい場合は、SequenceMatcher ロジックをカスタム コードに置き換える必要がある場合があります)