logo

文字列辞書を辞書Pythonに変換する

データ型の相互変換は何度も議論されており、解決すべき非常に一般的な問題です。この記事では、文字列形式の辞書から辞書への相互変換に関するさらに別の問題について説明します。これを行うための特定の方法について説明しましょう。

json.loads() を使用して文字列辞書を辞書に変換する

このタスクは、有効な辞書の文字列を JSON 形式、Python の辞書に変換する Python の json ライブラリのロードの組み込み関数を使用して簡単に実行できます。

段階的なアプローチ:



  1. 「」をインポートします json ' モジュール。
  2. 文字列変数「test_string」を文字列形式の辞書で初期化します。
  3. 「print()」関数を使用して元の文字列を出力し、「str()」関数を使用して文字列に変換された「test_string」変数と連結します。
  4. 「json.loads()」関数を使用して辞書文字列を辞書オブジェクトに変換し、変数「res」に代入します。
  5. 「print()」関数を使用して変換された辞書を出力し、「str()」関数を使用して文字列に変換された「res」変数と連結します。

Python3


デスクトップ.iniとは何ですか



# Python3 code to demonstrate> # convert dictionary string to dictionary> # using json.loads()> import> json> # initializing string> test_string>=> '{'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3}'> # printing original string> print>(>'The original string : '> +> str>(test_string))> # using json.loads()> # convert dictionary string to dictionary> res>=> json.loads(test_string)> # print result> print>(>'The converted dictionary : '> +> str>(res))>

>

>

出力:

The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}>

時間計算量: O(1) は、文字列を入力として受け取り、辞書を返す json.loads への単一の関数呼び出しであるためです。
補助スペース: O(n)。n は入力文字列の長さです。これは、返された辞書が入力文字列の長さに比例したスペースを必要とするためです。

ast.literal_eval() の使用 文字列辞書を辞書に変換するには

上記の方法を使用して同様の変換を実行することもできます。 eval 関数よりも安全な関数であり、辞書以外のすべてのデータ型の相互変換にも使用できます。

手順:

  1. プログラムは ast モジュールをインポートします。
  2. プログラムは、文字列変数 test_string を辞書の文字列表現 {Nikhil : 1, Akshat : 2, Akash : 3} で初期化します。
  3. プログラムは、print() 関数と str() 関数を使用して元の文字列を出力し、test_string 変数を文字列に変換します: print(The Original string : + str(test_string))。
  4. プログラムは、ast.literal_eval() 関数を使用して、辞書の文字列表現を Python 辞書に変換します: res = ast.literal_eval(test_string)。
  5. プログラムは、print() 関数と str() 関数を使用して結果の辞書を出力し、res 変数を文字列に変換します: print(The Converted Dictionary : + str(res))。

Python3




# Python3 code to demonstrate> # convert dictionary string to dictionary> # using ast.literal_eval()> import> ast> # initializing string> test_string>=> '{'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3}'> # printing original string> print>(>'The original string : '> +> str>(test_string))> # using ast.literal_eval()> # convert dictionary string to dictionary> res>=> ast.literal_eval(test_string)> # print result> print>(>'The converted dictionary : '> +> str>(res))>

>

>

出力:

The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}>

時間計算量: O(n) ここで、n は辞書文字列内の文字数です。
補助スペース: O(n) ここで、n は辞書文字列内の要素の数です。

eval() を使用して文字列辞書を辞書に変換する

上記の方法を使用して同様の変換を実行することもできます。 eval() 関数は、渡された引数を解析して Python 式に変換し、その Python 式を実行します。

パイソン




# Python3 code to demonstrate> # convert dictionary string to dictionary> # using eval()> # initializing string> test_string>=> '{'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3}'> # printing original string> print>(>'The original string : '> +> str>(test_string))> # using eval()> # convert dictionary string to dictionary> res>=> eval>(test_string)> # print result> print>(>'The converted dictionary : '> +> str>(res))>

>

>

出力:

The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}>

時間計算量: ○(1)
補助スペース: ○(1)

隠れたアプリを表示する

Split() メソッドと辞書内包表記を使用して文字列辞書を辞書に変換する

まず、strip() メソッドを使用して文字列から中括弧を削除します。次に、split() メソッドを使用して、文字列をキーと値のペアのリストに分割します。最後に、辞書内包表記を使用してペアを反復処理し、それらを個別のキー文字列と値文字列に分割し、値を整数に変換してから辞書に追加します。結果の辞書が返されます。

Python3




def> str_to_dict(string):> ># remove the curly braces from the string> >string>=> string.strip(>'{}'>)> ># split the string into key-value pairs> >pairs>=> string.split(>', '>)> ># use a dictionary comprehension to create> ># the dictionary, converting the values to> ># integers and removing the quotes from the keys> >return> {key[>1>:>->2>]:>int>(value)>for> key, value>in> (pair.split(>': '>)>for> pair>in> pairs)}> # test the function> test_string>=> '{'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3}'> print>(>'The original string : '> +> str>(test_string))> print>(>'The converted dictionary : '> +> str>(> >str_to_dict(test_string)))># The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3}> # The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}>

>

>

出力

The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}>

時間計算量: O(n)。n は辞書内のキーと値のペアの数です。
補助スペース: の上)

eval() 関数と replace() 関数を併用して文字列辞書を辞書に変換する

  • 辞書を含む文字列を文字列形式で初期化します。
  • 使用 交換する() 文字列内のすべての一重引用符 (') を二重引用符 () に置き換える関数。
  • 使用 eval() 関数を使用して、結果の文字列を Python 式として評価します。これは辞書オブジェクトになります。
  • 結果の辞書を変数に代入します。

Python3


キャッチキャッチJavaを試してください



# Python3 code to demonstrate> # convert dictionary string to dictionary> # using eval() and replace()> # initializing string> test_string>=> '{'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3}'> # printing original string> print>(>'The original string : '> +> str>(test_string))> # using eval() and replace()> # convert dictionary string to dictionary> res>=> eval>(test_string.replace(>'''>,>'''>))> # print result> print>(>'The converted dictionary : '> +> str>(res))>

>

>

出力

The original string : {'Nikhil' : 1, 'Akshat' : 2, 'Akash' : 3} The converted dictionary : {'Nikhil': 1, 'Akshat': 2, 'Akash': 3}>

時間計算量: O(n)。n は入力文字列の長さです。これは、replace() 関数の時間計算量が O(n) であるためです。
補助スペース: O(n)。n は入力文字列の長さです。