如何为每个键分配相同的值?

时间:2015-10-24 10:05:27

标签: python dictionary

我是python初学者。我首先使用dictionary

我有一个字典,它包含键的字母和任意值的值作为对,我想同时为每个键分配相同的值。我试图练习字典如下:

dict_ = {'a':1 , 'b': 2 , 'c': 3}

dict_ ['a'] = "It\'s an alphabet."
dict_ ['b'] = "It\'s an alphabet."
dict_ ['c'] = "It\'s an alphabet."

print dict_

假设我有很多键,一键一个地设置键的每个值太麻烦了。 有好主意吗?

6 个答案:

答案 0 :(得分:4)

您可以使用dict comprehension

dict_ = {'a':1 , 'b': 2 , 'c': 3}

dict_ = {k:"It\'s an alphabet." for k in dict_}

然而,这会创建一个新词典。循环使用现有的是现场执行此操作的最佳解决方案:

for k in dict_:
    dict_[k] = "It\'s an alphabet."

您可以使用for k in mydict循环遍历字典的所有键:

for k in mydict:
    # this block of code will be executed once for each
    # key in the dictionary. You can get the current key
    # with `k`:
    print k

上面的代码将打印字典的每个值。

由于您可以使用mydict[mykey] = myvalue分配一个密钥,因此您在此处所需要做的就是每个密钥在字典中为其分配"It\'s an alphabet"。这就是代码的作用:

# for each key `k` in the dictionary `dict_`
for k in dict_:
    # assign "It\'s an alphabet" to it:
    dict_[k] = "It\'s an alphabet"

答案 1 :(得分:3)

听起来你可能需要完全为defaultdict做的事情:

from collections import defaultdict
mydict = defaultdict(lambda: "It's an elephant")
print(mydict["a"])

如果你这样做,你就不必显式设置所有默认值:如果你试图查找一个不存在的键,它们将会存在。

如果您的目标是删除现有值并将其替换为默认值,请使用某种循环或对键进行理解。我支持@ bfontaine的答案,但你也可以这样做(也适用于旧版本的python):

mydict = dict((key, "It's an elephant") for key in mydict)

答案 2 :(得分:3)

此代码与某些早期解决方案类似。但是,它使用dict.update方法更新现有字典,并通过生成器表达式创建新的(键,值)元组,因此我们不创建临时中间字典。

dict_ = {'a':1 , 'b': 2 , 'c': 3}
dict_.update((key, "It's an elephant") for key in dict_)
print dict_

<强>输出

{'a': "It's an elephant", 'c': "It's an elephant", 'b': "It's an elephant"}

答案 3 :(得分:1)

使用dict理解。

>>> dict_ = {'a':1 , 'b': 2 , 'c': 3}
>>> dict_ = {i:"It's an alphabet." for i in dict_}
>>> dict_
{'a': "It's an alphabet.", 'c': "It's an alphabet.", 'b': "It's an alphabet."}

答案 4 :(得分:0)

您可以使用dict.fromkeys。它比输入字典上的for循环更好。

dict_ = {'a':1 , 'b': 2 , 'c': 3}

print dict.fromkeys(dict_, "It\'s an alphabet.")

链接描述:

tutorialspoint - python - dictionary_fromkeys

语法 以下是fromkeys()方法的语法 - dict.fromkeys(seq [,value])) 参数   -seq - 这是用于字典键准备的值列表。   -value - 这是可选的,如果提供,则value将设置为此值 我希望它可以帮到你。

答案 5 :(得分:0)

如果您已经拥有一组密钥,那么可以使用maplambda来实现这一目标。

dict_ = {'a':1 , 'b': 2 , 'c': 3} 
# Set default message to each key
info=map(lambda key: (key, "It\'s an alphabet."), dict_.keys())
dict(info)

输出

{'a': "It's an alphabet.", 'b': "It's an alphabet.", 'c': "It's an alphabet."}