将所有字典元素设置为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})