Tôi muốn so sánh các phần tử trong từ điển với nhau và xóa các mục theo một số tiêu chí so sánh. Và tôi rất muốn nó hiệu quả. Tôi có một chức năng có thể làm điều này, nhưng nó liên tục sao chép từ điển. Chắc chắn có một cách vượt trội:So sánh chính tả và loại bỏ các khóa tương tự một cách hiệu quả
mydict = {1:5,2:7,3:9,4:9,7:7,8:0,111:43,110:77}
def partial_duplicate_destroyer(mydict,tolerance):
for key1 in mydict.keys():
mydict_copy = mydict.copy()
for key2 in mydict_copy.keys():
if key2 - tolerance < key1 < key2 + tolerance and not(key1 == key2):
del(mydict[key1])
break
return mydict
print partial_duplicate_destroyer(mydict,2)
print partial_duplicate_destroyer(mydict,20)
print partial_duplicate_destroyer(mydict,200)
#correct output:
# {4: 9, 8: 0, 111: 43}
# {8: 0, 111: 43}
# {111: 43}
Nếu có một cặp khóa nằm trong khả năng chịu đựng lẫn nhau, có vấn đề gì bị xóa không? –
@David Robinson - Không, nhưng trong ví dụ trên khi dung sai = 2, chỉ có một khóa trong số 1,2,3,4 nên duy trì. – fraxel