Python で辞書をリストに変換する

  1. Python の keys() メソッドを使って辞書からリストにキーを変換する
  2. Python の values() メソッドを用いて辞書からリストに値を変換する
  3. Python で辞書をタプルのリストに変換する

Python の辞書は key-value のペアを組み合わせたものです。key の助けを借りて、辞書内の値にアクセスすることができます。さて、Python で辞書をリストに変換することは異なる意味を持ちます。どちらかです。

  1. キーを分離してリストに変換することができます。
  2. 値を分離してリストに変換することができます。
  3. 辞書のキーと値のペアをタプルのリストに変換します。

Python の keys() メソッドを使って辞書からリストにキーを変換する

4つの key-value ペアを持つ dictionary という名前の辞書があるとします。

dictionary = {'a': 'Apple', 'b': 'Banana', 'c': 'Cherries', 'd': 'Dragon Fruit'}

listOfKeys = dictionary.keys()
print("Type of variable listOfKeys is: ", type(listOfKeys))

listOfKeys = list(listOfKeys)

print("Printing the entire list containing all Keys: ")
print(listOfKeys)

print("Printing individual Keys stored in the list:")

for key in listOfKeys:
    print(key)

出力:

Type of variable listOfKeys is:  <class 'dict_keys'>

Printing the entire list containing all Keys: 
['a', 'b', 'c', 'd']

Printing individual Keys stored in the list:
a
b
c
d

これは辞書からすべての key を抽出し、その結果 (すべてのキー) を変数 listOfKeys に格納します。

ここで、変数 listOfKeys の型を確認すると <class 'dict_keys'> となるので、list() 関数の助けを借りて変数 listOfKeys をリストに変換しなければなりません。この時点で変数 listOfKeys の型を確認すると、<class 'dict_keys'> になってしまうからです。

この時点で、keys() 関数を使って辞書からすべてのキーを分離し、リストに変換したことになります。最後に、リスト内の要素を表示するには、for ループを使用しなければなりません。

Python の values() メソッドを用いて辞書からリストに値を変換する

values() メソッドは keys() メソッドと同じように動作します。唯一の違いは、values() メソッドがキーの代わりにすべての辞書の値を返すことです。

dictionary = {'a': 'Apple', 'b': 'Banana', 'c': 'Cherries', 'd': 'Dragon Fruit'}

listOfValues = dictionary.values()
print("Type of variable listOfValues is: ", type(listOfValues))

listOfValues = list(listOfValues)

print("Printing the entire list containing all values: ")
print(listOfValues)

print("Printing individual values stored in the list:")

for val in listOfValues:
    print(val)

出力:

Type of variable listOfValues is:  <class 'dict_values'>

Printing the entire list containing all values: 
['Apple', 'Banana', 'Cherries', 'Dragon Fruit']

Printing individual values stored in the list:
Apple
Banana
Cherries
Dragon Fruit

関数 values() を用いて dictionary の値を取得し、その結果を変数 listOfValues の中に格納します。

変数 listOfValues の型を確認すると、その型はクラス <class 'dict_values'> になります。しかし、あなたはそれをクラス <class 'list'> にしたいと考えています。したがって、変数 listOfValueslist() 関数を使ってリストに変換し、その結果を同じ変数 listOfValues に格納しなければなりません。

最後に、ループを使って listOfValues のリスト内のすべての値を表示します。

Python で辞書をタプルのリストに変換する

辞書をタプルのリストに変換するには、2つの方法があります。一つは items() 関数であり、もう一つは zip() 関数です。

1. items() 関数

関数 items() は辞書の要素を <class 'dict_items'> に変換し、その結果を変数 myList に格納します。myList はリストに変換する必要があるので、そのためには list() 関数を使って型キャストし、その結果を同じ変数 myList に格納する必要があります。

dictionary = {'a': 'Apple', 'b': 'Banana', 'c': 'Cherries', 'd': 'Dragon Fruit'}

myList = dictionary.items()
print(type(myList))

myList = list(myList)

print(myList) 

出力:

<class 'dict_items'>
[('a', 'Apple'), ('b', 'Banana'), ('c', 'Cherries'), ('d', 'Dragon Fruit')]

2. zip() 関数

関数 zip() は 2つの引数を取り、1つ目は keys() 関数を用いたキー、2つ目は辞書の values() 関数を用いた値を受け取ります。そして、zip オブジェクトを返します。

dictionary = {'a': 'Apple', 'b': 'Banana', 'c': 'Cherries', 'd': 'Dragon Fruit'}

myList = zip(dictionary.keys(), dictionary.values()) 
print(type(myList))

myList = list(myList)

print(myList) 

出力:

<class 'zip'>
[('a', 'Apple'), ('b', 'Banana'), ('c', 'Cherries'), ('d', 'Dragon Fruit')]

ここで、zip オブジェクトを list() 関数を使って list に変換しなければなりません。そして、最終的な結果を myList という同じ変数の中に格納するか、必要に応じて別の変数の中に格納し、最後にリスト全体を印刷します。

3. Python 2.x の iteritems() 関数

Python v2.x には iteritems() 関数もあり、items() 関数とほぼ同じように動作します。

iteritems()dictionary から各要素を取り出し、異なる型に変換します。変数 myList の型を調べると、型は <type 'dictionary-itemiterator'> です。そのため、関数 list() を用いてリストに変換する必要があります。変数 myList の型を確認すると、型は <型 'list'> であり、それを印刷すると要素はタプルのリストの形になります。

dictionary = {'a': 'Apple', 'b': 'Banana', 'c': 'Cherries', 'd': 'Dragon Fruit'}

myList = dictionary.iteritems()
print("Type of myList is: ",type(myList))

myList = list(myList)
print(myList)

出力:

('Type of myList is: ', <type 'dictionary-itemiterator'>)

[('a', 'Apple'), ('c', 'Cherries'), ('b', 'Banana'), ('d', 'Dragon Fruit')]

上記のコードを Pythonv2.x コンパイラで実行していることを確認してください。そうしないと、Python v3.x にこのメソッドがないため、エラーが発生します。

関連記事 - Python Dictionary

  • Python で辞書の値を変更する
  • Python 辞書を値でソートする方法
  • 関連記事 - Python List

  • Python の 1 から N までの数字のリスト
  • Python でリストの合計を取得する