2つの配列から辞書(dict)型に変換するワンライナーを思いついたので紹介します。 zip()と辞書型のリスト内法表記を使って書きます。
動作確認:Python 3.7
2つの配列から辞書(dict)型に変換するワンライナー
keys
とvalues
の2つの配列から{key: value}
のようなdictを作成します。
keys = ['a', 'b', 'c']
values = [1, 2, 3]
dic = {key: val for key, val in zip(keys, values)}
print(dic)
# {'a': 1, 'b': 2, 'c': 3}
注意点 : 配列の長さが異なる場合
配列の長さが異なる場合、zip()
は短い方に合わせます。
keys = ['a', 'b', 'c', 'd', 'e']
values = [1, 2, 3]
dic = {key: val for key, val in zip(keys, values)}
print(dic)
# {'a': 1, 'b': 2, 'c': 3}
配列長が長い方に合わせたいときは、itertools
のzip_longest()
を使います。
足りない要素はNone
で補います。
# len(keys) > len(values)
from itertools import zip_longest
keys = ['a', 'b', 'c', 'd', 'e']
values = [1, 2, 3]
dic = {key: val for key, val in zip_longest(keys, values)}
print(dic)
# {'a': 1, 'b': 2, 'c': 3, 'd': None, 'e': None}
ただし、keys
が短い場合はkeyがNone
になります。
# len(keys) < len(values)
from itertools import zip_longest
keys = ['a', 'b', 'c']
values = [1, 2, 3, 4, 5]
dic = {key: val for key, val in zip_longest(keys, values)}
print(dic)
# {'a': 1, 'b': 2, 'c': 3, None: 5}
あわせてどうぞ
zip()
の基本から応用までは以下の記事にまとめています。
Python:ファイルダウンロードの進行状況とファイルサイズを表示する方法。urllib
Pythonschedule2024-02-27
【Python】tqdmでforの進捗状況を表示する
PythonColabolatoryschedule2021-02-16
学習済みの日本語単語ベクトルをColabolatoryで試してみる
自然言語処理PythonColabolatoryschedule2021-02-04
Unity ML-Agentsで新しく学習環境を作る
Unity機械学習C#PythonDeepLearningschedule2021-01-22
27. 内部リンクの除去
自然言語処理100本ノックPythonschedule2020-03-17