次のように、辞書で重複した値を持つデータがある場合は、重複したデータを削除する方法を紹介します。
Original dict: {'a': 1, 'b': 2, 'c': 3, 'd': 2, 'e': 1}
Dict after removal: {'a': 1, 'b': 2, 'c': 3}
1. for loop(繰り返し文)でディクショナリ重複排除 (1)
for loopで実装する方法は難しくありません。まず、順番にdictを探索し、重複した値がある場合はフィルタリングして結果に登録しないようにします。
my_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 2, 'e': 1}
seen = []
result = dict()
for key, val in my_dict.items():
if val not in seen:
seen.append(val)
result[key] = val
print(f'Original dict: {my_dict}')
print(f'Dict after removal: {result}')
Output:
Original dict: {'a': 1, 'b': 2, 'c': 3, 'd': 2, 'e': 1}
Dict after removal: {'a': 1, 'b': 2, 'c': 3}
2. for loop(繰り返し文)で辞書重複を削除 (2)
上記と似ていますが、少し異なる方法で重複排除するコードを実装しました。
ディクショナリでkeyは同じですが、valueが異なる場合、 dict[key] = value
を実行すると更新されるという特徴を利用して以下のように実装しました。
上記のコードとの違いは、遅く検索されることが最終的に dict に追加されるデータになります。まず {value: key}
の dict 形式で重複したものを削除し、そのデータを {key: value}
に変換して dict にします。
my_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 2, 'e': 1}
dict_no_dup = dict()
result = dict()
for key, val in my_dict.items():
dict_no_dup[val] = key
for key, val in dict_no_dup.items():
result[val] = key
Output:
Original dict: {'a': 1, 'b': 2, 'c': 3, 'd': 2, 'e': 1}
Dict after removal: {'e': 1, 'd': 2, 'c': 3}
このコードは、重複したデータがある場合、順序の前にあるデータが削除されます。
3. comprehensionによる辞書の重複排除
すぐ上でfor loopで実装したものをdict comprehensionとして実装することもできます。
my_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 2, 'e': 1}
values = []
values = {val: key for key, val in my_dict.items()}
result = {val: key for key, val in values.items()}
print(f'Original dict: {my_dict}')
print(f'Dict after removal: {result}')
Output:
Original dict: {'a': 1, 'b': 2, 'c': 3, 'd': 2, 'e': 1}
Dict after removal: {'e': 1, 'd': 2, 'c': 3}
このコードは、重複したデータがある場合、順序の前にあるデータが削除されます。
Related Posts
- Python - JSONファイル読み書きする方法
- Python - 平方根の計算方法(Square Root)
- Python - 文字列 特定文字 削除
- Python lower() 文字列を小文字に変換
- Python upper() 文字列を大文字に変換
- Python - ファイル数の確認
- Python - イテレーションステートメントでセット巡回
- Python - 文字列位置(Index)を探す
- Python - ファイルを読み込み、1行ずつリストに保存する
- UbuntuにPython 3.10をインストールする方法
- Python - 関数の定義と呼び出し方法
- Python - ディクショナリーの整理と例
- Python - ディクショナリーの初期化、4つの方法
- Python - XML生成とファイルの保存
- Python - XML解析、タグ、または要素別に読み取る
- Python - 文字列をリストに変換する方法
- Python - 'and'と'&'の違い
- Python - 文字列 切り取り(substring、slicing)
- Python - 'is'と'=='の違い
- PythonでShell Command、スクリプトの実行
- Python - 数字3桁ごとにコンマ(,)を入れる方法
- Python - 辞書をリストに変換
- Python - 文字列から数字のみを抽出する方法
- Python - zipで二つのリスト縛り
- Python - リストを文字列に変換する
- Python - 辞書にキーがあることを確認する
- Python - ファイル、フォルダが存在確認
- Python - floatをintに変更する方法
- Python - リストの最初、最後の 要素を取得する方法
- Python - bytesをStringに変換する方法
- Python - Stringをbytesに変換する方法
- Python - 辞書の重複排除方法
- Python - 二つのリスト一つ併合
- Python - リストの重複排除、4つの方法
- Python - listの先頭にデータを追加する