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

【初心者向け】Pythonの辞書(dict)をリストに変換する3つの方法

Pythonの辞書をリストに変換するには?

Pythonの辞書(dict)クラスには、リストへの変換に便利なメソッドが3つ用意されています。それぞれitems()keys()values()で、以下のようなビューオブジェクトを返します。

  • items():キーと値のペア(タプル)で構成されるビューオブジェクト
  • keys():キーのみで構成されるビューオブジェクト
  • values():値のみで構成されるビューオブジェクト

これらのビューオブジェクトは、組み込み関数 list() を使うことで、簡単にリストオブジェクトへ変換できます。

実際のコード例

以下は、辞書から各ビューオブジェクトを取得し、リストに変換する具体例です。

>>> d1 = {'name': 'Ravi', 'age': 23, 'marks': 56}
>>> d1.items()
dict_items([('name', 'Ravi'), ('age', 23), ('marks', 56)])
>>> l1 = list(d1.items())
>>> l1
[('name', 'Ravi'), ('age', 23), ('marks', 56)]
>>> d1.keys()
dict_keys(['name', 'age', 'marks'])
>>> l2 = list(d1.keys())
>>> l2
['name', 'age', 'marks']
>>> l3 = list(d1.values())
>>> l3
['Ravi', 23, 56]

items():キーと値のペアをリスト化する

d1.items() を実行すると、キーと値がタプル形式で格納された dict_items オブジェクトが返されます。これを list() に渡すことで、[('name', 'Ravi'), ('age', 23), ('marks', 56)] のような「タプルのリスト」が得られます。

keys():キーだけをリスト化する

d1.keys()dict_keys オブジェクトを返します。list(d1.keys()) とすれば、辞書のすべてのキーを要素としたリスト ['name', 'age', 'marks'] が作成できます。

values():値だけをリスト化する

d1.values()dict_values オブジェクトを返します。これを list() で変換すると、値のみのリスト ['Ravi', 23, 56] が得られます。

補足:ビューオブジェクトの特徴

dict_itemsdict_keysdict_values といったビューオブジェクトは、元の辞書と連動しています。つまり、辞書の中身が変更されるとビューも自動的に反映されます。一方、list() で作成したリストは独立したコピーなので、元の辞書を変更しても影響を受けません。

用途に応じて、これら3つのメソッドを使い分けることで、辞書データを柔軟にリストとして扱うことができます。

  1. Pythonで文字列を単語のリストに変換する方法

    文字列を単語のリストに変換したい場合は、空白文字を基準に文字列を分割するだけで実現できます。最もシンプルな方法は、文字列クラスが標準で提供している split() メソッドを使うことです。このメソッドのデフォルトの区切り文字は空白であり、文字列に対して呼び出すと、空白文字の位置で自動的に分割してくれます。split()メソッドを使う方法引数を指定せずに split() を呼び出すだけで、連続する空白もまとめて処理され、単語ごとのリストが返されます。コード例>>> Please split this string.split() [Please, split, this, st

  2. Pythonでリストの文字列表現をリストに変換する方法【ast.literal_evalの使い方】

    Pythonでは、[apple, orange, banana] のように文字列として表現されたリストを、実際のリストオブジェクトへ変換したい場面があります。そんなときに便利なのが、標準ライブラリの ast.literal_eval() です。 ast.literal_eval()とは ast.literal_eval() は、文字列をPythonの式として安全に評価するための関数です。任意のコードを実行してしまう危険性がある eval() と異なり、評価できるのは文字列・数値・タプル・リスト・辞書・ブール値(True / False)、そして None といったPythonのリテラル構造のみ