在python中生成列表值的md5
我有一个名为abc的列表,其数据如下:在python中生成列表值的md5,python,list,hash,md5,Python,List,Hash,Md5,我有一个名为abc的列表,其数据如下: {'devicetype': ['nokia'],'userid': ['1234'], 'year': ['2013']} 现在我必须生成md5值,如诺基亚、1234、2013 为此,我在变量中取了这些值,如下所示 devicetype = abc['devicetype'] userid = abc['userid'] year = abc['year'] authvalue = hashlib.md5() authvalue.upd
{'devicetype': ['nokia'],'userid': ['1234'], 'year': ['2013']}
现在我必须生成md5值,如诺基亚、1234、2013
为此,我在变量中取了这些值,如下所示
devicetype = abc['devicetype']
userid = abc['userid']
year = abc['year']
authvalue = hashlib.md5()
authvalue.update(devicetype+userid+year)
之后,我尝试使用md5生成这样的散列
devicetype = abc['devicetype']
userid = abc['userid']
year = abc['year']
authvalue = hashlib.md5()
authvalue.update(devicetype+userid+year)
它给我一个错误“必须是字符串或缓冲区,而不是列表”
我知道这只接受字符串。但是如何生成这些列表值的md5呢?您有列表,而不是字符串。以每个列表的第一个元素为例:
authvalue = hashlib.md5()
auth1.update(devicetype[0] + userid[0] + year[0])
你有列表,而不是字符串。以每个列表的第一个元素为例:
authvalue = hashlib.md5()
auth1.update(devicetype[0] + userid[0] + year[0])
Martijn Pieters的答案基本上是正确的,你有一个元素的列表。但是,如果您有一本大词典,手动将[0]添加到每个条目可能会很麻烦。因此,您可以使用map()和reduce()来实现这一点 如果d是具有上述键值对的字典,则可以执行以下操作:
values = map(lambda x: x[0], d.values())
d、 values()只是字典值的列表(在您的示例中,是一个由1个元素组成的长列表):
通过将lambda函数映射到它们中的每一个,您可以摆脱内部列表:
['1234', 'nokia', '2013']
然后,您可以通过减少该列表来获得所有字符串的串联:
concat = reduce(lambda x, y: x + y, values, "")
因此,concat将:
'1234nokia2013'
然后您可以将其输入到哈希函数。Martijn Pieters的回答基本正确,您有单个元素的列表。但是,如果您有一本大词典,手动将[0]添加到每个条目可能会很麻烦。因此,您可以使用map()和reduce()来实现这一点 如果d是具有上述键值对的字典,则可以执行以下操作:
values = map(lambda x: x[0], d.values())
d、 values()只是字典值的列表(在您的示例中,是一个由1个元素组成的长列表):
通过将lambda函数映射到它们中的每一个,您可以摆脱内部列表:
['1234', 'nokia', '2013']
然后,您可以通过减少该列表来获得所有字符串的串联:
concat = reduce(lambda x, y: x + y, values, "")
因此,concat将:
'1234nokia2013'
然后可以将其馈送到哈希函数。什么是auth1?你意识到你拥有的三个变量也是数组,对吗?年份==['2013']@moopet:我错把auth1放在那里了。这是一种价值观。是的,我知道这是一个数组。如何生成它的哈希值什么是auth1?你意识到你拥有的三个变量也是数组,对吗?年份==['2013']@moopet:我错把auth1放在那里了。这是一种价值观。是的,我知道这是一个数组。如何生成itI的散列我会使用
'.join(values)
而不是整个reduce(lambda…
混乱。好吧,这取决于一个函数式程序员的能力,我想:)我会使用'.join(values)
而不是整个reduce(lambda…
混乱。好吧,这取决于一个函数式程序员的能力,我想:)