[解決済み】[key1,val1,key2,val2]をdictに変換する?
2022-04-07 19:36:24
質問
例えば、次のようなリストがあるとします。
a
はPythonで、その項目は都合よく辞書にマップされます。各偶数要素は辞書のキーを表し、次の奇数要素は値です。
を例とします。
a = ['hello','world','1','2']
で、それを辞書に変換したいのですが
b
ここで
b['hello'] = 'world'
b['1'] = '2'
これを達成するために、構文的に最もきれいな方法は何でしょうか?
どのように解決するのですか?
b = dict(zip(a[::2], a[1::2]))
もし
a
が大きい場合、おそらく次のようなことをしたくなるでしょう。これは、上記のような一時的なリストを作らないようにするためです。
from itertools import izip
i = iter(a)
b = dict(izip(i, i))
Python 3では、dict内包を使うこともできますが、皮肉なことに、最も簡単な方法は
range()
と
len()
というのは、通常であればコードスニッジとなるはずです。
b = {a[i]: a[i+1] for i in range(0, len(a), 2)}
そのため
iter()/izip()
メソッドは、EOLがコメントで指摘しているように、Python 3ではまだ最もPythonicであると思われますが。
zip()
は Python 3 ではすでに遅延しているので
izip()
.
i = iter(a)
b = dict(zip(i, i))
Python 3.8以降では、"walrus"演算子を使って一行で書くことができます(
:=
):
b = dict(zip(i := iter(a), i))
そうでなければ、セミコロンを使って1行にまとめる必要があります。
関連
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac
-
[解決済み] バイトを文字列に変換する
-
[解決済み] 2つのリストを辞書に変換するにはどうしたらいいですか?
-
[解決済み] String表現のDictionaryをDictionaryに変換する?
-
[解決済み] なぜdict[key]ではなく、dict.get(key)なのか?
-
[解決済み] ネストされたPythonのdictをオブジェクトに変換する?
-
[解決済み] Pythonのdictをdataframeに変換する
-
[解決済み】任意の条件関数で辞書をフィルタリングする方法は?
-
[解決済み] 辞書のリストに値がすでに存在するかどうかをチェックしますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PicgoのイメージベッドツールをPythonで実装する
-
Python jiabaライブラリの使用方法について説明
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】終了コード -1073741515 (0xC0000135)でプロセス終了)
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。
-
[解決済み】Flaskのテンプレートが見つからない【重複あり