質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

509閲覧

『複数の多次元リスト』から『辞書』を作りたい場合

dd_

総合スコア111

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

2クリップ

投稿2021/11/29 15:57

python

1li1 = [["1番目", "2番目", "3番目"], ["4番目", "5番目", "6番目"], ["7番目", "8番目", "9番目"]] 2li2 = [["a", "b", "c"], ["d", "e", "f"], ["g", "h", "i"]] 3li3 = [["あ", "い", "う"], ["え", "お", "か"], ["き", "く", "け"]] 4li4 = [["1", "2", "3"], ["4", "5", "6"], ["7", "8", "9"]] 5 6hira = "ひら" 7abc = "abc" 8num = "数字"

こちらのリストとキーから
実際は改行はしてませんが
下の様な辞書を作りたいと思い

{"1番目":{"ひら":"あ", "abc":"a", "数字":"1"}, "2番目":{"ひら":"い", "abc":"b", "数字":"2"}, "3番目":{"ひら":"う", "abc":"c", "数字":"3"}, ・・・(中略)・・・ "9番目":{"ひら":"け", "abc":"i", "数字":"9"}}

python

1li1 = [["1番目", "2番目", "3番目"], ["4番目", "5番目", "6番目"], ["7番目", "8番目", "9番目"]] 2li2 = [["a", "b", "c"], ["d", "e", "f"], ["g", "h", "i"]] 3li3 = [["あ", "い", "う"], ["え", "お", "か"], ["き", "く", "け"]] 4li4 = [["1", "2", "3"], ["4", "5", "6"], ["7", "8", "9"]] 5 6hira = "ひら" 7abc = "abc" 8num = "数字" 9for v1s in li1: 10 for v2s in li2: 11 for v3s in li3: 12 for v4s in li4: 13 dic = {v1 : {hira: v2, abc : v3, num: v4} for v1,v2,v3,v4 in zip(v1s, v2s, v3s, v4s)} 14print(dic)

のような感じで書いてみたり
多次元のリストを一次元にしてみようとしたりしましたが
なかなかうまくいかなかったので
こちらで質問させて頂きまし。

得たい実行結果を得るには
どういったコードがありますでしょうか??
教えて頂けると幸いです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

python

1dic = { 2 li1[i][j]: { 3 hira: li3[i][j], abc: li2[i][j], num: li4[i][j], 4 } for i in range(len(li1[0])) for j in range(len(li1))} 5 6from pprint import pprint 7pprint(dic, sort_dicts=False) 8 9# 10{'1番目': {'ひら': 'あ', 'abc': 'a', '数字': '1'}, 11 '2番目': {'ひら': 'い', 'abc': 'b', '数字': '2'}, 12 '3番目': {'ひら': 'う', 'abc': 'c', '数字': '3'}, 13 '4番目': {'ひら': 'え', 'abc': 'd', '数字': '4'}, 14 '5番目': {'ひら': 'お', 'abc': 'e', '数字': '5'}, 15 '6番目': {'ひら': 'か', 'abc': 'f', '数字': '6'}, 16 '7番目': {'ひら': 'き', 'abc': 'g', '数字': '7'}, 17 '8番目': {'ひら': 'く', 'abc': 'h', '数字': '8'}, 18 '9番目': {'ひら': 'け', 'abc': 'i', '数字': '9'}}

投稿2021/11/29 16:52

melian

総合スコア19865

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dd_

2021/11/29 20:55

ご回答ありがとうございます。 このやり方もとても良いと思ったので参考にさせて頂きます。ありがとうございます!
guest

0

ベストアンサー

以下です。

python

1dic = {key:{hira:hira_v, abc:abc_v, num:num_v} for key, abc_v, hira_v, num_v in zip(sum(li1, []), sum(li2, []),sum(li3, []), sum(li4, []))}

投稿2021/11/29 16:17

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dd_

2021/11/29 16:25

ありがとうございます。うまくいきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問