Pythonで辞書型のリストをユニークにする方法

Pythonでリストをユニークにする(重複を削除する)には次のようにします。

a = [1, 1, 2, 2, 3, 3, 3, 4, 5, 5]
b = list(set(a))
print(b)

結果
[1, 2, 3, 4, 5]

要素が数値であればこのように簡単なのですが要素が辞書型変数の場合は少し面倒です。

[
  {"name":"apple", "color":"red"},
  {"name":"apple", "color":"green"},
  {"name":"apple", "color":"red"},
  {"name":"orange", "color":"orange"},
  {"name":"apple", "color":"green"}
]

上のような場合です。
要素は5個ですが種類は3種類です(「赤のりんご」「緑のりんご」「オレンジのみかん」)。

次のようにします。

a = [
  {"name":"apple", "color":"red"},
  {"name":"apple", "color":"green"},
  {"name":"apple", "color":"red"},
  {"name":"orange", "color":"orange"},
  {"name":"apple", "color":"green"}
]
b = []
for x in a:
  if x not in b:
    b.append(x)
print(b)

結果
[
{‘name’: ‘apple’, ‘color’: ‘red’},
{‘name’: ‘apple’, ‘color’: ‘green’},
{‘name’: ‘orange’, ‘color’: ‘orange’}
]

きちんと3種類になりました。

コメント

タイトルとURLをコピーしました