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

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

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

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

5回答

4589閲覧

要素がdict型の配列の最大値を取得するには

退会済みユーザー

退会済みユーザー

総合スコア0

Python

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

1グッド

1クリップ

投稿2020/05/11 06:51

要素がdict型の配列の最大値を取得するにはどうしたらいいのでしょうか?
下記の例だと、キー’A’の最大値3のdictデータを取得したいのです。

python

1 data = [] 2 data.append({ 'A': 2, 'B': 'moji' }) 3 data.append({ 'A': 3, 'B': 'moji2' }) 4 data.append({ 'A': 0, 'B': 'moji3' }) 5 6# ---> { 'A': 3, 'B': 'moji2' } を取得したい

最大値3だけなら以下のコードでうまくいくのですが、同じ辞書のBの値も欲しいのです。

python

1 max(dct['A'] for dct in data if dct['A'])
x98000👍を押しています

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

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

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

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

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

guest

回答5

0

keyで比較対象を指定します。

Python

1max(data, key=lambda x: x["A"])

投稿2020/05/11 07:05

otn

総合スコア85901

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

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

退会済みユーザー

退会済みユーザー

2020/05/11 07:22

ありがとうございます! うまくいきました。
guest

0

ベストアンサー

maxのキーワード引数keyを利用します。

Python

1import operator 2 3... 4 5dst = max(data, key=operator.itemgetter('A')) 6print(dst)

組み込み関数 - max — Python 3.8.3rc1 ドキュメント

投稿2020/05/11 07:04

編集2020/05/11 07:05
LouiS0616

総合スコア35668

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

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

退会済みユーザー

退会済みユーザー

2020/05/11 07:22

ありがとうございます! うまくいきました。
guest

0

Python

1print([i for i in data if i['A'] == max(dct['A'] for dct in data)]) 2#[{'A': 3, 'B': 'moji2'}]

投稿2020/05/11 07:10

meg_

総合スコア10760

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

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

LouiS0616

2020/05/11 07:22

'A'の最大値の導出は前以て済ませておいた方が効率が良さそうです。若干ですけど。
退会済みユーザー

退会済みユーザー

2020/05/11 07:23

ありがとうございます! うまくいきました。
meg_

2020/05/11 07:24

データ量が多いとそうかと思いますが、改善については質問者さんにお任せしますよ。
meg_

2020/05/11 07:28

こちらの場合、最大値が複数ある場合にも検出できます。もっと簡潔な記述もあるかとは思いますが。
guest

0

data["A"] の max 値の要素が複数ある場合に、該当要素をすべて抽出するようにしてみました。
@.@y

python3

1data = [] 2data.append({ 'A': 2, 'B': 'moji' }) 3data.append({ 'A': 3, 'B': 'moji2' }) 4data.append({ 'A': 0, 'B': 'moji3' }) 5data.append({ 'A': 3, 'B': 'moji4' }) 6 7max_a = max([x["A"] for x in data]) 8print(max_a) 9 10max_elems = [x for x in data if x["A"] == max([x["A"] for x in data])] 11print(max_elems)

実行例
イメージ説明

投稿2020/05/11 22:41

katoy

総合スコア22324

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

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

退会済みユーザー

退会済みユーザー

2020/05/28 06:14

遅くなりましたが、ありがとうございます!
guest

0

AとBをなくして辞書型にしてしまうと.. キー('moji~')がかぶらなければの話ですが

Python

1data = {} 2data['moji'] = 2 3data['moji2'] = 3 4data['moji3'] = 0 5 6max_key = max(d, key=d.get) 7print(max_key) 8# moji2 9```すみません他の人の方が的確でした

投稿2020/05/11 07:11

編集2020/05/11 07:22
ForestSeo

総合スコア2722

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

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

退会済みユーザー

退会済みユーザー

2020/05/11 07:24

いえ、ありがとうございます! いろんな方法があるので参考になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問