說orig
是OrderedDict
其中包含正常字符串:字符串鍵值對,但有時該值可能是另一個,嵌套OrderedDict
。按鍵遞歸排序嵌套的OrderedDict
我想按鍵排序orig
,按字母順序排列(遞增),並按遞歸執行。
規則:
- 假設關鍵字符串是不可預知的
- 假設築巢可能發生無限,例如級別1-50都具有字符串,OrderedDicts等作爲值。
需要與sorted
算法的幫助:
import string
from random import choice
orig = OrderedDict((
('a', choice(string.digits)),
('b', choice(string.digits)),
('c', choice(string.digits)),
('special', OrderedDict((
('a', choice(string.digits)),
('b', choice(string.digits)),
('c', choice(string.digits)),
)))
))
sorted_copy = OrderedDict(sorted(orig.iteritems(), ...))
self.assertEqual(orig, sorted_copy)
它只是一個單一的深度?或者與'special'相對應的'OrderedDict'可以在裏面有另一個'OrderedDict'? –
@SukritKalra我在這個問題中增加了一個'Rules'部分,希望這個問題可以在不需要OrderedDict結構的專門知識的情況下重新使用。 – tester
@StevenRumbalski需要它來安全地創建包含大量不同嵌套數據類型的字典的校驗和。儘管字典的內容在技術上沒有改變,但像字典鍵順序這樣的小事情正在改變校驗和。在使用'hashlib.md5(str(my_dict).hexdigest()'快速計算字典的散列值之前對這些鍵進行排序,這使我能夠安全地比較將來的版本(真正的原因是MongoDB並不保證每個對象的順序:http:// docs.mongodb.org/manual/core/document/#document-limitations)TLDR:...長篇小說 – tester