我有一个名为abc的列表,其中有这样的数据:
{'devicetype': ['nokia'],'userid': ['1234'], 'year': ['2013']}现在,我必须生成像诺基亚、'1234‘、'2013’这样的值的md5,为此,我在变量中获得了这样的值
devicetype = abc['devicetype']
userid = abc['userid']
year = abc['year']之后,我尝试使用md5生成像下面这样的哈希
authvalue = hashlib.md5()
authvalue.update(devicetype+userid+year)它给了我一个错误“必须是字符串或缓冲区,而不是列表”,我知道这只会接受字符串。但是如何生成这些列表值的md5呢?
发布于 2013-08-04 19:24:37
Martijn的回答基本上是正确的,您有一个元素的列表。但是,如果您有一本大词典,手动添加每个条目可能会很痛苦。因此,您可以使用map()和减()来完成这一任务。
如果d是具有上述键值对的字典,则可以这样做:
values = map(lambda x: x[0], d.values())d.values()只是字典值的列表(在您的例子中,是一个包含1元素长列表的列表):
[['1234'], ['nokia'], ['2013']]通过将该lambda函数映射到其中的每一个函数,您可以去掉内部列表:
['1234', 'nokia', '2013']然后,您可以通过减少该列表来获得所有字符串的连接:
concat = reduce(lambda x, y: x + y, values, "")因此,我们将:
'1234nokia2013'然后你就可以给你的哈希函数喂食了。
发布于 2013-08-04 19:12:14
你有列表而不是字符串。取每个列表中的第一个元素:
authvalue = hashlib.md5()
auth1.update(devicetype[0] + userid[0] + year[0])https://stackoverflow.com/questions/18046570
复制相似问题