35

私は疑問に思っていました:(特定の文字列に対して複数のエントリがない限り)不完全なキーで dict 値にアクセスすることは可能でしょうか? 例えば:

my_dict = {'name': 'Klauss', 'age': 26, 'Date of birth': '15th july'}
print my_dict['Date']
>> '15th july'

これは可能ですか?どうすればそれができますか?

4

7 に答える 7

8

最善の解決策ではありません。改善できます (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
于 2013-06-14T11:24:55.027 に答える
0

pywinauto には「ファジー」辞書の素晴らしく賢い実装があります。これは、ここで必要なものに最適かもしれません。

https://code.google.com/p/pywinauto/source/browse/pywinauto/fuzzydict.py

ドキュメントはこちら: http://pywinauto.googlecode.com/hg/pywinauto/docs/code/pywinauto.fuzzydict.html

(編集: ただし、特にキーの先頭から一致させたい場合は、SequenceMatcher ロジックをカスタム コードに置き換える必要がある場合があります)

于 2013-06-14T11:34:51.357 に答える