Computing an md5 hash of a data structure
json.dumps() can sort dictionaries by key. So you don't need other dependencies:
import hashlib
import json
data = ['only', 'lists', [1,2,3], 'dictionaries', {'a':0,'b':1}, 'numbers', 47, 'strings']
data_md5 = hashlib.md5(json.dumps(data, sort_keys=True).encode('utf-8')).hexdigest()
print(data_md5)
Prints:
87e83d90fc0d03f2c05631e2cd68ea02
bencode sorts dictionaries so:
import hashlib
import bencode
data = ['only', 'lists', [1,2,3],
'dictionaries', {'a':0,'b':1}, 'numbers', 47, 'strings']
data_md5 = hashlib.md5(bencode.bencode(data)).hexdigest()
print data_md5
prints:
af1b88ca9fd8a3e828b40ed1b9a2cb20