Python: 替换字典中所有的值

19

是否可以用整数1替换字典中所有值,无论原来的值是什么?

谢谢!


2
在发布问题到SO之前,我们强烈建议先尝试一些解决方案并最终将其发布,因为这个社区的意义不在于提供现成的解决方案,而是帮助人们更好地学习和理解自己的问题 :) - Samuele Mattiuzzo
4个回答

26

当然,你可以这样做:

d = {x: 1 for x in d}

这将创建一个新的字典 d,它将每个在原来的字典中的键都映射到 1


谢谢,我一直在寻找这样的东西。只是我不太确定正确的格式是什么,上次我尝试发布有关字典的内容时,遭到了嘲笑;这就是我没有在这里发布失败尝试的原因。 - user1620716
11
修改原始字典的代码:for k in d: d[k] = 1 - Steven Rumbalski
2
另一种方法:d = d.fromkeys(d, 1) - barracel
天啊,太美了。 - Harvastum
1
正如@StevenRumbalski所指出的那样:这并不是替换字典中的值,而是整个字典。因此,d在此之后是一个新实例。这是否重要取决于应用程序。 - Falko

20
你可以使用字典推导(就像其他人说的那样)来创建一个具有旧字典相同键的新字典,或者如果你需要在原地完成整个操作:
for k in d:
    d[k] = 1

如果你真的喜欢一行代码,你可以使用update来实现就地修改:

d.update( (k,1) for k in d )

update() 方法接受一个字典或元组的可迭代对象。这很简单明了,哈哈。 - masaya

0
a = {1:2, 2:2,3:2}
a = {x:1 for (x,_) in a.iteritems()}
print a

{1: 1, 2: 1, 3: 1}


4
当然只需要使用{k:1 for k in a}即可,无需获取每个项目再将其丢弃。 - kindall
请注意,这不会修改原始字典。除非您计划将其封装在函数中,否则这并不是真正的问题: def overwrite_dict_values(d, new_value):… - Steven Rumbalski

-1

是的,这是可能的。遍历字典中的每个键,并将相关值设置为1。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接