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

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

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

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

Q&A

解決済

1回答

244閲覧

python3で2つのDICT変数の中の共通キーを使って明細データを取り出したい

yanyan1010

総合スコア19

Python 3.x

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

0グッド

0クリップ

投稿2018/07/20 09:45

編集2018/07/20 11:39

質問の書き方が悪く、理解できなくて申し訳ありません。

次のdict変数が2つあるとします。実際にはファイルで持っています。
この2つのDICT変数の、k1, k2, k3をキーとして、その下の項目の値を拾ってきたい。
DICT1とDICT2を合体させたいというか

DICT1のこの部分と
"k1": {
"key": "tokyo",
"test": "true"
},

DICT2のこの部分をまとめるというか
"k1": {
"nickName": "tarou",
"zan": 100
},

DICTまとめ、こんな形にしてしまいたい。
"k1": {
"key": "tokyo",
"test": "true"
"nickName": "tarou",
"zan": 100
},

こんな形にして、後続の処理のfor文で値を取り出して、その後の処理を行いたい。

いまはDICT1から値を拾ってくる際、次のようなコードを書いています。
ここにどのように足していけばいいのか教えて下さい。

DICT1={
"k1": {
"key": "tokyo",
"test": "true"
},
"k2": {
"key": "nagoya",
"test": "false"
},
"k3": {
"key": "hekichi",
"test": "true"
}
}

DICT2={
"k1": {
"nickName": "tarou",
"zan": 100
},
"k2": {
"nickName": "jirou",
"zan": 200
},
"k3": {
"nickName": "hanako",
"zandaka": 300
}
}

for item in (DICT1):
a=DICT1[item]['key']
b=DICT1[item]['test']
print(a)
print(b)

※失礼しました、動作確認済みコードに貼り直しました。

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

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

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

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

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

LouiS0616

2018/07/20 10:04

ご提示のコードはそのままコピーしても動きません。どのような動作を期待しているのか明確にするためにも、実行可能なコードを載せてください。
guest

回答1

0

ベストアンサー

現状のコードをリファクタしたいという意味だと解釈しました。


DICT2の役割が分かりませんが、とりあえず現状のコードは次のように書き直せます。

Python

1for value in DICT1.values(): 2 for v in value.values(): 3 print(v)

実行結果 Wandbox

plain

1tokyo 2true 3nagoya 4false 5hekichi 6true

これなら項目名に関わらず、二重の辞書の全要素を出力できます。

質問編集を受けて

DICTまとめ、こんな形にしてしまいたい。

なるほど。二つの辞書を統合したいということですね。

Python

1DICT = {} 2for k in DICT1: 3 DICT[k] = {**DICT1[k], **DICT2[k]}

実行結果 DICTはこのようになります。 Wandbox

plain

1{'k1': {'key': 'tokyo', 'nickName': 'tarou', 'test': 'true', 'zan': 100}, 2 'k2': {'key': 'nagoya', 'nickName': 'jirou', 'test': 'false', 'zan': 200}, 3 'k3': {'key': 'hekichi', 'nickName': 'hanako', 'test': 'true', 'zandaka': 300}}

双方の辞書のキーの組が完全に同一であるという前提の下ですが。

コードの書き方について

teratailには、上記のようにコードを見やすく表示する機能があります。
質問編集画面を開き、コードを選択した状態で<code>ボタンを押してください。
Python
特にPythonの場合、インデントが崩れるとコードの意味が変わってしまいます。

投稿2018/07/20 11:24

編集2018/07/20 11:46
LouiS0616

総合スコア35658

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

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

yanyan1010

2018/07/23 16:45

丁寧な解答ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問