Quantcast
Channel: 配列タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 757

二次元配列からキーごとの最大値を取り出す

$
0
0

よくある話だとは思うのですが二次元配列

A=[['001','1'],['001','2'],['002','1'],['002','3'],['001','3'],['002','2'],['002','4']]

こういうものから各要素の[0]をキーとして、キーごとの[1]の最大値を求めたい場合のロジックを考えます。
上記の場合だと、[['001', '3'], ['002', '4']]が導き出したい答えです。

# 二次元配列[[key, value], [key, value], ...]
input_list=[['001','1'],['001','2'],['002','1'],['002','3'],['001','3'],['002','2'],['002','4']]# 各要素のkeyを取得して重複削除
keys=list(set(i[0]foriininput_list))tmp_dict={}forkinkeys:# 要素のkeyが一致するvalueをリスト化
v_l=list(set([i[1]ifi[0]==kelse0foriininput_list]))# key: valueの辞書型で保持
tmp_dict.update({k:v_l})print(tmp_dict)# {'001': [0, '3', '1', '2'], '002': [0, '3', '4', '1', '2']}
output_list=[]forkintmp_dict.keys():# 各keyが保持するvalueの最大値を取得しリスト化
output_list.append([k,max(tmp_dict[k],key=int)])print(output_list)# [['001', '3'], ['002', '4']]

というわけでキーごとの最大値が求められました。


Viewing all articles
Browse latest Browse all 757

Trending Articles