私はこれをしたいのですが、辞書の場合:
"My string".lower()
組み込み関数はありますか、それともループを使用する必要がありますか?
私はこれをしたいのですが、辞書の場合:
"My string".lower()
組み込み関数はありますか、それともループを使用する必要がありますか?
ループまたはリスト/ジェネレータ内包表記のいずれかを使用する必要があります。すべてのキーと値を小文字にしたい場合は、これを行うことができます::
dict((k.lower(), v.lower()) for k,v in {'My Key':'My Value'}.iteritems())
キーだけを小文字にしたい場合は、これを行うことができます::
dict((k.lower(), v) for k,v in {'My Key':'My Value'}.iteritems())
ジェネレーター式(上記で使用) は、辞書の作成に役立つことがよくあります。私はいつもそれらを使用しています。メモリ オーバーヘッドのない、ループ内包表記のすべての表現力。
以下は Rick Copeland の回答と同じですが、using ジェネレーター式を使用せずに記述しただけです。
outdict = {}
for k, v in {'My Key': 'My Value'}.iteritems():
outdict[k.lower()] = v.lower()
ジェネレーター式、リスト内包表記、および (Python 2.7 以降では) dict 内包表記は、基本的にループを書き換える方法です。
Python 2.7 以降では、辞書内包表記を使用できます (1 行のコードですが、読みやすくするために再フォーマットできます)。
{k.lower():v.lower()
for k, v in
{'My Key': 'My Value'}.items()
}
空の dict/list/etc. を初期化する必要がないため、ループに相当するものよりも整頓されていることがよくあります。
Python 3でのより短い方法: {k.lower(): v for k, v in my_dict.items()}
提供された辞書に複数のタイプのキー/値 (数値、文字列など) がある場合。次に、次の解決策を使用します。
例えば; 以下に示すような mydict という名前の辞書がある場合
mydict = {"FName":"John","LName":"Doe",007:true}
Python 2.x の場合
dict((k.lower() if isinstance(k, basestring) else k, v.lower() if isinstance(v, basestring) else v) for k,v in mydict.iteritems())
Python 3.x の場合
dict((k.lower() if isinstance(k, str) else k, v.lower() if isinstance(v, str) else v) for k,v in mydict.iteritems())
注:これは 1 次元の辞書でうまく機能します
あなたPython 3
ができること:
dict((k.lower(), v.lower()) for k,v in {'Key':'Value'}.items())
のPython 2
代わりに:.items()
.iteritems()
dict((k.lower(), v.lower()) for k,v in {'Key':'Value'}.iteritems())