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

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

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

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

Q&A

解決済

2回答

2169閲覧

Python:辞書型のvalue値のみを取り出し、変数に代入したい。

an_0215

総合スコア4

Python

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

0グッド

0クリップ

投稿2021/12/18 19:08

編集2021/12/18 19:10

前提・実現したいこと

a={b:{c:d}},{e:{f:g}},‥
のようなkeyがstr,valuesがdictで格納されているデータセットa(dict)を持っているとき、

最終的には → valuesのなかのkey(上のaでいうc,f)をある値xにすべて変換したい
つまり、a={b:{x:d}},{e:{x:g}},‥となってればいい

その前段階として → aのvaluesのみを取り出した辞書を作りたい
つまり、新たな変数bに対して
b={c:d},{f:g}‥ といったように代入したい

試したこと


b = {}

for k in a.values():
b.update(k)

print(b)

これを実行すると、aの最後のvaluesのみしか代入されず進展がありません

ほぼ初心者です。どなたか力を貸してください。

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

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

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

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

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

guest

回答2

0

ベストアンサー

やっつけですが分かりやすく書くとこんなかんじ?

python

1a = {'b':{'c':'d'},'e':{'f':'g'}} 2b = {} 3for x in a.keys(): 4 [k] = a[x].keys() 5 b[x] = {'x':a[x][k]} 6print(b)

--- 追記 ---
「試したこと」のコードを動かしてみましたが、とくに問題ないような?
--- 追記 ---
a[x].keys() は、例えば 'b':{'c':'d'} の 'c' を取り出す目的です。
ただし、これで返ってくるのは ['c'] のような配列になります。
そこで分割代入という方法で変数 k に 'c' を入れてます。

python

1#分割代入の例 2[a,b] = [1,2] 3print(a) # 1 4print(b) # 2

上の例でいうと変数 x には 'b' が、変数 k には 'c' が入ってますので
それを使って変数 a の辞書形式と同じようになるよう組み立てて設定する
という流れになっています。

投稿2021/12/19 12:37

編集2021/12/19 15:05
takasima20

総合スコア7460

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

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

an_0215

2021/12/19 14:48

回答ありがとうございます。上記のコードで動き、目的が達成されました。 コードの意味について質問があります。for文とprint文で挟まれた二行のコードの意味がいまいちよくわからず、なぜ最終的に目的とする辞書を得ることができたのか理解できません。解説していただけると幸いです。
an_0215

2021/12/19 16:03

追記ありがとうございます。 今回の辞書型aのように辞書が入れ子?になっている場合、5行目右辺の a[x][k]のように書くことでvalueの中のvalueを指定できるという認識であっていますか?
takasima20

2021/12/19 20:37

はい、そうなりますね。 この場合 a['b']['c'] と表記すると 'd' が得られるかんじです。
guest

0

質問のaがkeyが「str,valuesがdictで格納されている」となっていないので、日本語の方の定義を採用しました。

pythn

1>>> a = {'b':{'c':'d'},'e':{'f':'g'}} 2>>> print({key:{'x':value for key2, value in dct.items()} for key, dct in a.items()}) 3{'b': {'x': 'd'}, 'e': {'x': 'g'}}

投稿2021/12/18 23:10

ppaul

総合スコア24666

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

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

an_0215

2021/12/19 14:49

問題の訂正ありがとうございます。至らぬところがあり、すいません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問