我是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_
假设我有很多键,一键一个地设置键的每个值太麻烦了。 有好主意吗?
答案 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)
如果您已经拥有一组密钥,那么可以使用map
和lambda
来实现这一目标。
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."}