我在python中很新,我有一个问题,我不知道如何解决。
例如,我有这个结构,其中包含管理员,berit等成员:
DEFAULT_DATA = {
'administrator': {
'name': 'Admin',
'pw': 'secret',
'is_author': False,
'is_admin': True
}
'berit': {
'name': 'berit',
'pw': 'apa',
'is_author': False,
'is_admin': False
}
然后可以通过以下方法访问此数据:
def DefaultData():
"""Provides default data for Gruyere."""
return copy.deepcopy(DEFAULT_DATA)
我想对密码进行md5哈希,因此它们不是纯文本,但我不知道如何访问诸如'pw'之类的字段并在python中重新分配一个新值。
以下是关于它可能是什么的猜测:
stored_data = data.DefaultData()
for member in stored_data:
for field in member:
if field=='pw':
'pw' = md5.new(salt+pw).hexdigest() // how do you access the value?
答案 0 :(得分:1)
您可以通过字典界面访问它。
stored_data = data.DefaultData()
for member in stored_data.itervalues():
member['pw'] = md5.new(salt + member['pw']).hexdigest()
两条评论:
data
中的值,因为您要在DefaultData
中返回该副本。name
字段。至少就这两种用户拥有相同密码并不明显。答案 1 :(得分:1)
stored_data
中的值本身就是字典。迭代值并应用算法:
stored_data = data.DefaultData()
for data in stored_data.values():
data['pw'] = md5(salt + data['pw']).hexdigest()
from pprint import pprint
pprint(stored_data)
{'administrator': {'is_admin': True,
'is_author': False,
'name': 'Admin',
'pw': '33e7cb694fb6fb2f848af6774d9ff138'},
'berit': {'is_admin': False,
'is_author': False,
'name': 'berit',
'pw': '00c10978330d65eb0cb739a629b6ed15'}}