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

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

新規登録して質問してみよう
ただいま回答率
85.45%
連結リスト

連結リストとは、データ構造のひとつであるリストの中で、要素が前後の要素の情報を持つことで、要素が連結(リンク)しているリストの事を呼びます。

Python

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

Q&A

解決済

1回答

2727閲覧

Pythonの辞書型のリストの連結(結合)

SatoToy

総合スコア5

連結リスト

連結リストとは、データ構造のひとつであるリストの中で、要素が前後の要素の情報を持つことで、要素が連結(リンク)しているリストの事を呼びます。

Python

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

0グッド

0クリップ

投稿2021/08/05 00:43

編集2021/08/05 00:46

Pythonで2つの辞書型のリストをつなげる方法についてご教示お願いします。
昨日一日中やったのですが、どうしても連結して出力できずにこちらに来ました。
d_listとds_listをつなげて、その下の『つなげた結果』のようにしたいです。

d_list = [{'date': '2021-04-02', 'amount': '29750'}, {'date': '2021-04-01', 'amount': '32500'}, {'date': '2021-04-01', 'amount': '29550'}] d2_list = [{'detail01': '0', 'detail02': '2750'}, {'detail01': '0', 'detail02': '8250'}, {'detail01': '0', 'detail02': '0'}] # つなげた結果 date    amount detail01 detail02 0 2/04/2021 29750  0   2750 1 1/04/2021 32500  0   8250 2 1/04/2021 29550  0    0

mergeやconcatを使ってもエラーになりだめでした。下の元コードではds_listをリスト型のリストから辞書型のリストに変換しています。データ同士の型を合わせたほうが出力しやすいかと思いやってみたのですができず、もし以下のコードから直接データを連結し出力できる方法もあれば、こちらもご教示お願いしたいです。
よろしくお願い致します。

# 元コード from selenium import webdriver import pandas as pd driver = webdriver.Chrome() url = 'ログインした後のページになります。' driver.get(url) trs = driver.find_elements_by_css_selector('table#Grid > tbody > tr') d_list = [] ds_list = [] for i, tr in enumerate(trs): date = tr.find_element_by_css_selector('td:first-of-type').text amount = tr.find_element_by_css_selector('td:nth-of-type(2)').text pre_detail = tr.find_element_by_css_selector('td:last-of-type').text details = pre_detail.replace(' ', '').replace(',', ',').replace(',', ' ') detail = details.split() d = { 'date': date, 'amount': amount, } d_list.append(d) ds_list.append(detail) # 同じ辞書型のリストにする key2 = ['detail01', 'detail02'] d2_list = [dict(zip(key2,item)) for item in ds_list] # csvで出力 df1 = pd.DataFrame(d_list) df1.to_csv('lh.csv', index=True, encoding='utf-8-sig') df2 = pd.DataFrame(ds_list) df2.to_csv('lhs.csv', index=True, encoding='utf-8-sig')

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

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

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

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

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

guest

回答1

0

ベストアンサー

変換するだけなら簡単ですが、リストとか辞書とかpandasのDataFrameの意味を理解できていないと、自分では何もできないですよ。

公式ドキュメント シーケンス型 --- list, tuple, range
公式ドキュメント マッピング型 --- dict

辞書のリスト・辞書からDataFrameを作成
連結方向(縦・横)の指定: 引数axis

以上をちゃんと読みましょう。

変換の例

python

1>>> import pandas as pd 2>>> print(pd.concat([pd.DataFrame(d_list), pd.DataFrame(d2_list)], axis=1)) 3 date amount detail01 detail02 40 2021-04-02 29750 0 2750 51 2021-04-01 32500 0 8250 62 2021-04-01 29550 0 0

投稿2021/08/05 01:16

ppaul

総合スコア24666

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

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

SatoToy

2021/08/05 06:04

望み通りの出力ができました!ありがとうございます! また、DataFrameについてのURLもありがとうございます。 ご指摘のとおり、最近始めたばかりできちんと理解をしていなく、本か有用なサイトを探しておりました。 いただいた、URLも理解できるまでしっかり読みます。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.45%

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

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

質問する

関連した質問