1. ホーム
  2. python

[解決済み] 大文字・小文字を区別しない辞書

2023-03-06 23:47:06

質問

大文字と小文字を区別しない辞書を作りたいのですが、どうすればいいですか?

こんなサンプルコードもあります。

text = "practice changing the color"

words = {'color': 'colour',
        'practice': 'practise'}

def replace(words,text):

    keys = words.keys()

    for i in keys:
        text= text.replace(i ,words[i])
    return  text

text = replace(words,text)

print text

出力=色を変える練習

別の文字列を "practice changing the Color" という文字列が必要です。 Color は大文字で始まる) でも同じ出力が得られます。

を使用して小文字に変換する一般的な方法があると思います。 mydictionary[key.lower()] を使用して小文字に変換する一般的な方法があると思いますが、これを私の既存のコードにどのように統合するのが最善かわかりません。(これがとにかく合理的で単純なアプローチであるならば)。

どのように解決するのですか?

私があなたを正しく理解し、あなたが大文字と小文字を区別しない方法で辞書をキーにする方法が必要な場合、1つの方法はdictのサブクラスとセッター/ゲッターをオーバーロードすることでしょう。

class CaseInsensitiveDict(dict):
    def __setitem__(self, key, value):
        super(CaseInsensitiveDict, self).__setitem__(key.lower(), value)

    def __getitem__(self, key):
        return super(CaseInsensitiveDict, self).__getitem__(key.lower())