Python データ構造学習
リストを使って記載してみる
def names(name_and_grouplist, group_name): _names = [] for name_and_group in name_and_group_list: if name_and_group[0] == group_name: name = name_and_group[1] if name not in _names: _names.append(name) return _names name_and_group_list = [ ["Aグループ", "Tom"], ["Aグループ", "Jerry"], ["Bグループ", "Mike"], ["Bグループ", "Ichiro"], ["Bグループ", "Mike"], ] result_list = names(name_and_group_list, "Bグループ") print(result_list)
['Mike', 'Ichiro']
辞書を使って記載してみる
def get_name_and_group(name_and_group_list): # 辞書宣言 _names_by_group = {} print(type(_names_by_group)) for name_and_group in name_and_group_list: group = name_and_group[0] name = name_and_group[1] print(type(group)) print(type(name)) if group not in _names_by_group: _names_by_group[group] = [] if name not in _names_by_group: _names_by_group[group].append(name) return _names_by_group name_and_group_list = [ ["A", "Tom"], ["A", "Jerry"], ["B", "Mike"], ["B", "Ichiro"], ["B", "Mike"], ] print(type(name_and_group_list)) result_list = get_name_and_group(name_and_group_list) print(result_list["B"])
['Mike', 'Ichiro', 'Mike']
defaultdictを使用して、辞書を改善 (listで初期化)
from collections import defaultdict def get_names_by_group(someList): _names_by_group = defaultdict(list) for item in someList: group = item[0] name = item[1] if name not in _names_by_group[group]: _names_by_group[group].append(name) return _names_by_group name_and_group_list = [ ["A", "Tom"], ["A", "Jerry"], ["B", "Mike"], ["B", "Ichiro"], ["B", "Mike"], ] result_list = get_names_by_group(name_and_group_list) print(result_list["B"])
['Mike', 'Ichiro']
defaultdictを使用してみる
defaultdictは標準ライブラリのcollectionsモジュールに含まれるデータ型です。 辞書に存在しないキーにアクセスしたとき、デフォルト値が設定されたキーを自動で作ってくれるのがメリットです。 defaultdict の引数には、「初期化時に実行する関数」を記述します。
defaultdictを使用して、辞書を改善 (setで初期化)
from collections import defaultdict def get_names_by_group(someList): _names_by_group = defaultdict(set) for group, name in someList: _names_by_group[group].add(name) return _names_by_group name_and_group_list = [ ["A", "Tom"], ["A", "Jerry"], ["B", "Mike"], ["B", "Ichiro"], ["B", "Mike"], ] result_list = get_names_by_group(name_and_group_list) print(result_list["B"])
{'Mike', 'Ichiro'}
リンク
defaultdict()の使い方について
Python defaultdict の使い方
defaultdict()についてわかりやすくまとめて見た