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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

3回答

4190閲覧

Pythonで複数のリストを辞書にまとめる方法

RarigoB

総合スコア26

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/04/13 10:20

環境 python3.5

pythonで
3つのリストがあったとして、そのうちの一つのリストをkeyとして設定し、あとの2つのリストを辞書として設定する方法がうまくいきません。

実現したいこと

Python

1list1 = [key1,key2,key3] 2list2 = [value1-1,value1-2,value1-3] 3list3 = [value2-1,value2-3,value2-3] 4 56result = {"key1":value1-1,value2-1 7 "key2":value1-2,value2-2 8 "key3":value1-3,value2-3 9 }

上記のようなことを実現するにはどうすればいいでしょうか?

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

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

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

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

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

Untitled_Sample

2018/04/13 11:44

データの格納状態でエラーです。文字列にして下さい。
guest

回答3

0

zipと辞書内包表記を使用してこのように書けます。

python

1>>> list1 = ["k1","k2","k3"] 2>>> list2 = ["v11","v12","v13"] 3>>> list3 = ["v21","v22","v23"] 4>>> {k:(v1, v2) for k,v1,v2 in zip(list1, list2, list3)} 5{'k2': ('v12', 'v22'), 'k1': ('v11', 'v21'), 'k3': ('v13', 'v23')}

投稿2018/04/13 11:37

hayataka2049

総合スコア30933

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

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

0

こんな感じに出来ます。

Python

1list1 = ['k1', 'k2', 'k3'] 2list2 = ['v11', 'v12', 'v13'] 3list3 = ['v21', 'v22', 'v23'] 4 5values = zip(list2, list3) 6 7my_dict = dict(zip( 8 list1, 9 values 10)) 11 12print(my_dict)

実行結果 Wandbox

plain

1{'k1': ('v11', 'v21'), 'k2': ('v12', 'v22'), 'k3': ('v13', 'v23')}

投稿2018/04/13 10:24

LouiS0616

総合スコア35660

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

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

0

ベストアンサー

別な方法で書いてみました。

python

1# -*- coding: utf-8 -*- 2list1 = ['k1', 'k2', 'k3'] 3list2 = ['v11', 'v12', 'v13'] 4list3 = ['v21', 'v22', 'v23'] 5 6result = {} 7 8# リストの要素数が不一致の時はassert 9assert len(list1) == len(list2) and len(list2) == len(list3), "要素数不一致" 10 11for i, key in enumerate(list1): 12 if key not in result: 13 result[key] = [] 14 result[key] = [list2[i], list3[i]] # 注1、注2 15 16print(result) 17# 結果 18# {'k1': ['v11', 'v21'], 'k3': ['v13', 'v23'], 'k2': ['v12', 'v22']} 19

注1:タプルにする場合は、result[key] = (list2[i], list3[i])
注2:同一キー時、リストを追加する場合は、result[key].extend([list2[i], list3[i]])

投稿2018/04/14 04:38

ikapy

総合スコア1167

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問