1

複数の要素を持つリストがあり、重複を削除したいのですが、リストの例を次に示します。

list = [{'status': 'OK', 'mid': '6639'}, {'status': 'OK', 'mid': '6639'}, {'status': 'OK', 'mid': '6640'}, {'status': 'OK', 'mid': '6640'}, {'status': 'OK', 'mid': '6641'}, {'status': 'OK', 'mid': '6641'}, {'status': 'OK', 'mid': '6642'}, {'status': 'OK', 'mid': '6643'}]

関数セットを使用しようとしましたが、リストがハッシュできないというエラーが表示されました。重複を削除する方法を知っている人はいますか?

4

1 に答える 1

4

引き続き a を使用できset()ますが、各リストをタプルに変換する必要があります。ここでは、キーと値のソートされたタプルを使用して、重複を正確に見つけます。

set(tuple(sorted(el.items())) for el in somelist)

リストを整理し、辞書をそのまま維持するには、次を使用できます。

seen = set()
seen_add = seen.add
[x for x in somelist if tuple(sorted(x.items())) not in seen and not seen_add(tuple(sorted(x.items())))]

後者のデモ:

>>> seen = set()
>>> seen_add = seen.add
>>> [x for x in somelist if tuple(sorted(x.items())) not in seen and not seen_add(tuple(sorted(x.items())))]
[{'status': 'OK', 'mid': '6639'}, {'status': 'OK', 'mid': '6640'}, {'status': 'OK', 'mid': '6641'}, {'status': 'OK', 'mid': '6642'}, {'status': 'OK', 'mid': '6643'}]
于 2013-04-23T15:31:15.640 に答える