Pythonでリスト文字列を辞書に変換する
ここに、要素を含む文字列が表示されてリストになるシナリオがあります。ただし、これらの要素は、キーと値のペアを表すこともでき、辞書になります。この記事では、そのようなリスト文字列を取得して辞書にする方法を説明します。
分割とスライスあり
このアプローチでは、分割関数を使用して要素をキーと値のペアとして分離し、スライスを使用してキーと値のペアを辞書形式に変換します。
例
stringA = '[Mon:3, Tue:5, Fri:11]' # Given string print("Given string : \n",stringA) # Type check print(type(stringA)) # using split res = {sub.split(":")[0]: sub.split(":")[1] for sub in stringA[1:-1].split(", ")} # Result print("The converted dictionary : \n",res) # Type check print(type(res))
出力
上記のコードを実行すると、次の結果が得られます-
('Given string : \n', '[Mon:3, Tue:5, Fri:11]') ('The converted dictionary : \n', {'Fri': '11', 'Mon': '3', 'Tue': '5'})
evalとreplaceを使用
eval関数は、文字列から実際のリストを取得し、replaceによって各要素がキーと値のペアに変換されます。
例
stringA = '[18:3, 21:5, 34:11]' # Given string print("Given string : \n",stringA) # Type check print(type(stringA)) # using eval res = eval(stringA.replace("[", "{").replace("]", "}")) # Result print("The converted dictionary : \n",res) # Type check print(type(res))
出力
上記のコードを実行すると、次の結果が得られます-
('Given string : \n', '[18:3, 21:5, 34:11]') ('The converted dictionary : \n', {18: 3, 34: 11, 21: 5})
-
Pythonのリストvsタプルvs辞書
リストオブジェクトとタプルオブジェクトはシーケンスです。ディクショナリは、キーと値のペアのハッシュテーブルです。リストとタプルは、アイテムの順序付けられたコレクションです。辞書は順序付けられていないコレクションです。 リストオブジェクトと辞書オブジェクトは変更可能です。つまり、新しいアイテムを追加したり、アイテムを削除したりすることができます。タプルは不変のオブジェクトです。タプルオブジェクトでは、追加または削除操作はできません。 それぞれがカンマ区切りのアイテムのコレクションです。リストアイテムは角かっこ[]で囲まれ、タプルアイテムは丸かっこまたはかっこ()で囲まれ、辞書アイテムは中かっこ
-
Pythonで文字列を辞書に変換する方法は?
ここでast.literal_eval()を使用して、文字列をPython式として評価できます。式ノードまたはPython式を含む文字列を安全に評価します。提供される文字列またはノードは、文字列、数値、タプル、リスト、dict、ブール値、およびなしのPythonリテラル構造のみで構成されます。例: >>>import ast >>>x = ast.literal_eval("{'foo' : 'bar', 'hello' : 'world'}") >>