Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中生成列表值的md5_Python_List_Hash_Md5 - Fatal编程技术网

在python中生成列表值的md5

在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

我有一个名为abc的列表,其数据如下:

{'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…
混乱。好吧,这取决于一个函数式程序员的能力,我想:)