Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.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
将所有字典元素设置为0 python_Python_Python 3.x_Dictionary - Fatal编程技术网

将所有字典元素设置为0 python

将所有字典元素设置为0 python,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我有一本满是数字的字典: {1:10, 2:5, 3:18, 4:0, 5:1} 我想知道的是,如何将所有这些值设置为零,而不改变每个元素?因此,这就像: {1:0, 2:0, 3:0, 4:0, 5:0} 我还不习惯使用字典,因此如果有任何帮助,我将不胜感激。到位: >>> d = {1:10, 2:5, 3:18, 4:0, 5:1} >>> for k in d: ... d[k] = 0 ... >>> d {1: 0,

我有一本满是数字的字典:

{1:10, 2:5, 3:18, 4:0, 5:1}
我想知道的是,如何将所有这些值设置为零,而不改变每个元素?因此,这就像:

{1:0, 2:0, 3:0, 4:0, 5:0}
我还不习惯使用字典,因此如果有任何帮助,我将不胜感激。

到位:

>>> d = {1:10, 2:5, 3:18, 4:0, 5:1}
>>> for k in d:
...     d[k] = 0
... 
>>> d
{1: 0, 2: 0, 3: 0, 4: 0, 5: 0}
理解和可选重新分配:

>>> d = {1:10, 2:5, 3:18, 4:0, 5:1}
>>> d = {k:0 for k in d}
>>> d
{1: 0, 2: 0, 3: 0, 4: 0, 5: 0}

使用字典理解:

>>> d = {1: 10, 2: 5, 3: 18, 4: 0, 5: 1}
>>> d.update({k:0 for k in d})
>>> d
{1: 0, 2: 0, 3: 0, 4: 0, 5: 0}
您可以压缩字典键和无穷多个零的迭代器,然后创建一个字典,如下所示:

dict(zip(d, itertools.repeat(0))) # create a dict using the zip of the keys and some zeros

另一种相当奇怪的方法:

d = dict.fromkeys(d.keys(), 0)

一种更奇怪的方法

>>> d = {1:10, 2:5, 3:18, 4:0, 5:1}
>>> d = d.fromkeys(d, 0)
>>> d
{1: 0, 2: 0, 3: 0, 4: 0, 5: 0}
这个答案的优点是,如果d是dict以外的映射,它可以返回与d相同类型的对象


你不喜欢奇怪的答案吗+1一般来说,在d上调用classmethod会更好—请参阅我的回答无需使用d.keys,只需使用d。如果您使用的是python2,这可以避免创建临时列表
>>> from collections import defaultdict
>>> d = defaultdict()
>>> d.update({1:10, 2:5, 3:18, 4:0, 5:1})
>>> d.fromkeys(d, 0)
defaultdict(None, {1: 0, 2: 0, 3: 0, 4: 0, 5: 0})