HOWTO · Python
Python で辞書をリストに変換する
この記事では、Python で辞書をリストに変換する方法を紹介します。
このページの内容
Python の辞書は key-value のペアを組み合わせたものです。key の助けを借りて、辞書内の値にアクセスすることができます。さて、Python で辞書をリストに変換することは異なる意味を持ちます。どちらかです。
- キーを分離してリストに変換することができます。
- 値を分離してリストに変換することができます。
- 辞書のキーと値のペアをタプルのリストに変換します。
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'> にしたいと考えています。したがって、変数 listOfValues を list() 関数を使ってリストに変換し、その結果を同じ変数 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')]
上記のコードを Python v2.x コンパイラで実行していることを確認してください。そうしないと、Python v3.x にこのメソッドがないため、エラーが発生します。