2012-11-24 98 views
0

我需要檢查兩個字符是否相等。如果四捨五入到小數點後6位的值相等,那麼程序必須說它們是相等的。對於例如以下兩種類型的字典都是平等的如何比較兩個基於python中舍入值的字典?

{'A': 0.00025037208557341116} 

{'A': 0.000250372085573415} 

任何人都可以建議我如何做到這一點?我的字典很大(超過8000條),我需要多次訪問這個值來做其他計算。

+1

您的值和/或字典在比較之間是否會發生變化? –

+0

是的,實際上我迭代計算一個字典,如果當前字典與舊字典相同,我需要停止迭代。 – user1219801

+0

如果它不同?在計算字典時,我會比較*每個*鍵和值。在計算其他詞典時查找鍵/值對相對便宜(線性時間)。 –

回答

0

迭代地生成第二個dict,測試每個鍵。從字典中查找與您比較的鍵/值對是便宜的(線性成本),並在您找到它們時舍入值。

你基本上正在執行一組差異來測試密鑰的相等性,這要求在最小的集合上至少有一個完整的循環。如果您已經需要循環以生成其中一個字典,那麼您將處於一個優勢,因爲這將爲您提供最短路徑,以最快速度確定。

要測試在設定的公差範圍內兩個浮標相同,請參閱What is the best way to compare floats for almost-equality in Python?