首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成python中列表值的md5

生成python中列表值的md5
EN

Stack Overflow用户
提问于 2013-08-04 19:09:18
回答 2查看 6.2K关注 0票数 0

我有一个名为abc的列表,其中有这样的数据:

代码语言:javascript
复制
{'devicetype': ['nokia'],'userid': ['1234'], 'year': ['2013']}

现在,我必须生成像诺基亚、'1234‘、'2013’这样的值的md5,为此,我在变量中获得了这样的值

代码语言:javascript
复制
 devicetype = abc['devicetype']
 userid = abc['userid']
 year = abc['year']

之后,我尝试使用md5生成像下面这样的哈希

代码语言:javascript
复制
  authvalue = hashlib.md5()
  authvalue.update(devicetype+userid+year)

它给了我一个错误“必须是字符串或缓冲区,而不是列表”,我知道这只会接受字符串。但是如何生成这些列表值的md5呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-04 19:24:37

Martijn的回答基本上是正确的,您有一个元素的列表。但是,如果您有一本大词典,手动添加每个条目可能会很痛苦。因此,您可以使用map()和减()来完成这一任务。

如果d是具有上述键值对的字典,则可以这样做:

代码语言:javascript
复制
values = map(lambda x: x[0], d.values())

d.values()只是字典值的列表(在您的例子中,是一个包含1元素长列表的列表):

代码语言:javascript
复制
[['1234'], ['nokia'], ['2013']]

通过将该lambda函数映射到其中的每一个函数,您可以去掉内部列表:

代码语言:javascript
复制
['1234', 'nokia', '2013']

然后,您可以通过减少该列表来获得所有字符串的连接:

代码语言:javascript
复制
concat = reduce(lambda x, y: x + y, values, "")

因此,我们将:

代码语言:javascript
复制
'1234nokia2013'

然后你就可以给你的哈希函数喂食了。

票数 1
EN

Stack Overflow用户

发布于 2013-08-04 19:12:14

你有列表而不是字符串。取每个列表中的第一个元素:

代码语言:javascript
复制
authvalue = hashlib.md5()
auth1.update(devicetype[0] + userid[0] + year[0])
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18046570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档