Python で辞書をリストに変換する
-
Python の
keys()
メソッドを使って辞書からリストにキーを変換する -
Python の
values()
メソッドを用いて辞書からリストに値を変換する - 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 にこのメソッドがないため、エラーが発生します。