编辑:正如@BrenBarn 指出的那样,原来的没有意义。
给定一个 dicts 列表(由 --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 之禅的精神,什么是“显而易见的方法”?