Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python入門】セミコロン区切りの文字列を辞書(dict)に変換する簡単な方法

セミコロン区切りの文字列を辞書に変換したい

Pythonでは、次のような「キー=値」のペアがセミコロン(;)で連結された文字列を扱うことがあります。

"Name1=Value1;Name2=Value2;Name3=Value3"

このような文字列を辞書(dict)型に変換するのは非常に簡単です。基本的な考え方は以下の2ステップです。

  1. 文字列を split(";") でセミコロンごとに分割する
  2. 各要素をさらに split("=") でイコール記号ごとに分割し、その結果を dict() コンストラクタに渡す

具体的なコード例

実際のコードはわずか1行で書けます。リスト内包表記ではなくジェネレータ式を使うことで、メモリ効率も良好です。

>>> s = "Name1=Value1;Name2=Value2;Name3=Value3"
>>> dict(item.split("=") for item in s.split(";"))
{'Name1': 'Value1', 'Name2': 'Value2', 'Name3': 'Value3'}

処理の流れを解説

このコードがどのように動作しているのか、順を追って見てみましょう。

  • s.split(";")["Name1=Value1", "Name2=Value2", "Name3=Value3"] というリストが生成されます。
  • 各要素に対して item.split("=") を実行すると、["Name1", "Value1"] のようなキーと値のリストになります。
  • dict() は「キーと値のペア」を受け取れるため、これらのリストから自動的に辞書が構築されます。

注意点:値に「=」が含まれる場合

値の中にイコール記号が含まれる可能性がある場合は、maxsplit 引数を使って最初の「=」だけで分割するのが安全です。

>>> s = "Name1=Value1;Name2=a=b"
>>> dict(item.split("=", 1) for item in s.split(";"))
{'Name1': 'Value1', 'Name2': 'a=b'}

このように、split()dict() を組み合わせるだけで、セミコロン区切りの文字列を簡潔に辞書へ変換できます。設定文字列やクエリパラメータの解析など、さまざまな場面で活用できるテクニックなので、ぜひ覚えておきましょう。

  1. Pythonで区切り文字(str)を指定して文字列を分割する方法

    Pythonで文字列を特定の区切り文字で分割する方法は、主に2つあります。1つは文字列クラスの組み込みメソッド split() を使う方法、もう1つは正規表現モジュール re の re.split() を使う方法です。それぞれの使い方を詳しく見ていきましょう。 split()メソッドで文字列を分割する PythonのStringクラスには split() というメソッドが用意されており、区切り文字をオプション引数として指定できます。引数を省略した場合、デフォルトの区切り文字は空白(ホワイトスペース)になります。 >>> aa-ab-ca.split(-) [aa, ab, c

  2. Pythonで文字列を逆順にする方法|スライスとreversed()の使い方を解説

    Pythonでは、文字列スライスやrange演算子を活用することで、文字列を簡単に逆順(反転)にすることができます。この記事では、代表的な2つの方法をわかりやすく解説します。 方法1:スライス記法 [::-1] を使う(推奨・高速) 最もシンプルで一般的なのが、スライス記法を使う方法です。ステップに -1 を指定するだけで、文字列を後ろから前へ一文字ずつ取り出せます。 >>> Hello[::-1] olleH >>> Halloween[::-1] neewollaH スライスの仕組み 角括弧 [] の中には、コロン「:」で区切った3つの値を指定できます