質問するログイン新規登録

Q&A

解決済

1回答

2514閲覧

(Python)辞書のリストを結合して出力する方法を教えてください.

kawauso_shiba

総合スコア18

Python 3.x

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

0グッド

0クリップ

投稿2018/11/30 10:20

0

0

例えば,次の2つの辞書のリストを結合して,

d1 = [{'A': 1, 'B': 2}, {'A': 6, 'B': 7}, {'A': 11, 'B': 12}] d2 = [{'C': 3, 'D': 4, 'E': 5}, {'C': 8, 'D': 9, 'E': 10}, {'C': 13, 'D': 14, 'E': 15}]
[{'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5}, {'A': 6, 'B': 7, 'C': 8, 'D': 9, 'E': 10}, {'A': 11, 'B': 12, 'C': 13, 'D': 14, 'E': 15}]

d1とd2が結合したように出力したいと考えています.
そこで,以下のようにupdate関数を使いました.

d1.update(d2) print(d1)

しかし,下記のようなエラーコメントが出てしまい,どうしたらよいのか分かりません.

AttributeError: 'list' object has no attribute 'update'

初歩的なこととと思いますが,教えていただけますと幸いです.
よろしくお願い致します.

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

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

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

guest

回答1

0

ベストアンサー

zipして、各辞書オブジェクトのupdateを呼び出せば良いです。

Python

1for e1, e2 in zip(d1, d2): 2 e1.update(e2) 3 4print(d1)

実行結果 Wandbox

[{'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5}, {'A': 6, 'B': 7, 'C': 8, 'D': 9, 'E': 10}, {'A': 11, 'B': 12, 'C': 13, 'D': 14, 'E': 15}]

ただし、d1を破壊的に変更していることにご留意ください。


新しくオブジェクトを作るなら、内包表記で書くとわりあいシンプルです。

Python

1d3 = [ 2 {**e1, **e2} for e1, e2 in zip(d1, d2) 3]

投稿2018/11/30 10:23

編集2018/11/30 10:25
LouiS0616

総合スコア35680

kawauso_shiba

2018/11/30 10:38

早速ありがとうございます. 新しくオブジェクトを作って内包表記で書く方法は良いですね. 大変勉強になりました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問