編集:@BrenBarnが指摘したように、オリジナルは意味がありませんでした。
dictのリスト(提供csv.DictReader
:すべてにstr
キーと値があります)を考えると、すべてをセットに詰め込んで重複を削除すると便利ですが、ハッシュ化できないため、これを直接行うことはできませんdict
。いくつかの既存の 質問は、集合/辞書を偽造する方法に触れていますが、どちらの方法を優先すべきかについては触れていません。__hash__()
# i. concise but ugly round trip
filtered = [eval(x) for x in {repr(d) for d in pile_o_dicts}]
# ii. wordy but avoids round trip
filtered = []
keys = set()
for d in pile_o_dicts:
key = str(d)
if key not in keys:
keys.add(key)
filtered.append(d)
# iii. introducing another class for this seems Java-like?
filtered = {hashable_dict(x) for x in pile_o_dicts}
# iv. something else entirely
PythonのZenの精神で、「それを行うための明白な方法」とは何ですか?