Python 如何为每个键指定相同的值?

Python 如何为每个键指定相同的值?,python,dictionary,Python,Dictionary,我是python初学者。我第一次使用字典 我有一个字典,它包含键的字母表和任意值作为对,我想同时为每个键分配相同的值。我尝试按照以下方式练习操作字典: 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_ 假设我有很多键,逐个设置每个键的值太麻烦

我是python初学者。我第一次使用
字典

我有一个字典,它包含键的字母表和任意值作为对,我想同时为每个键分配相同的值。我尝试按照以下方式练习操作字典:

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_
假设我有很多键,逐个设置每个键的值太麻烦了。
有什么好主意吗?

你可以使用
dict.fromkeys
。这比在输入字典上进行
循环要好

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

print dict.fromkeys(dict_, "It\'s an alphabet.")
dict_ = {'a':1 , 'b': 2 , 'c': 3}
dict_.update((key, "It's an elephant") for key in dict_)
print dict_
作为链接的说明:

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

您可以使用
dict.fromkeys
。这比在输入字典上进行
循环要好

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

print dict.fromkeys(dict_, "It\'s an alphabet.")
dict_ = {'a':1 , 'b': 2 , 'c': 3}
dict_.update((key, "It's an elephant") for key in dict_)
print dict_
作为链接的说明:

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

使用听写理解

>>> 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."}

使用听写理解

>>> 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."}

听起来您可能需要的正是
defaultdict
的用途:

from collections import defaultdict
mydict = defaultdict(lambda: "It's an elephant")
print(mydict["a"])
如果这样做,则根本不必显式设置所有默认值:如果您试图查找一个不存在的键,它们将突然出现

如果您的目标是清除现有值并用默认值替换它们,那么可以通过对键进行某种循环或理解来实现。我赞同@bfontaine的答案,但您也可以这样做(也适用于较旧版本的python):


听起来您可能需要的正是
defaultdict
的用途:

from collections import defaultdict
mydict = defaultdict(lambda: "It's an elephant")
print(mydict["a"])
如果这样做,则根本不必显式设置所有默认值:如果您试图查找一个不存在的键,它们将突然出现

如果您的目标是清除现有值并用默认值替换它们,那么可以通过对键进行某种循环或理解来实现。我赞同@bfontaine的答案,但您也可以这样做(也适用于较旧版本的python):

您可以使用:

然而,这会创建一个新词典。在现有的基础上循环是实现这一点的最佳解决方案:

for k in dict_:
    dict_[k] = "It\'s an alphabet."
您可以使用mydict中k的
遍历字典的所有键:

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
上面的代码将打印字典的每个值

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

print dict.fromkeys(dict_, "It\'s an alphabet.")
dict_ = {'a':1 , 'b': 2 , 'c': 3}
dict_.update((key, "It's an elephant") for key in dict_)
print dict_
由于您可以使用
mydict[mykey]=myvalue
分配给一个键,因此在这里您只需为每个键分配
“它是字典中的字母表”
。代码就是这样做的:

# 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"
您可以使用:

然而,这会创建一个新词典。在现有的基础上循环是实现这一点的最佳解决方案:

for k in dict_:
    dict_[k] = "It\'s an alphabet."
您可以使用mydict中k的
遍历字典的所有键:

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
上面的代码将打印字典的每个值

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

print dict.fromkeys(dict_, "It\'s an alphabet.")
dict_ = {'a':1 , 'b': 2 , 'c': 3}
dict_.update((key, "It's an elephant") for key in dict_)
print dict_
由于您可以使用
mydict[mykey]=myvalue
分配给一个键,因此在这里您只需为每个键分配
“它是字典中的字母表”
。代码就是这样做的:

# 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"

如果您手中已经有一组钥匙,则可以使用
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."}

如果您手中已经有一组钥匙,则可以使用
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."}

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

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

print dict.fromkeys(dict_, "It\'s an alphabet.")
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"}

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

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

print dict.fromkeys(dict_, "It\'s an alphabet.")
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"}

OP想要修改现有字典,而不是创建新字典。什么?创建一个新的是什么意思?它可以为现有字典的每个键赋予相同的值。@BurgerKing OP想要修改现有字典;不创建新对象;这就是dict.fromkeys所做的。@alexis我不同意。您在内存中创建一个新词典,然后将其分配给
dict\uu
,而不是就地修改对象。这对内存复杂性来说是非常糟糕的。对于这样的短代码段,这是完全可以的,但在一般情况下不是。这不是意见问题:python的常见做法是通过创建替换项而不是就地编辑来“过滤”集合。OP希望修改现有词典,而不是创建新词典。什么?创建一个新的是什么意思?它可以为现有字典的每个键赋予相同的值。@BurgerKing OP想要修改现有字典;不创建新对象;这就是dict.fromkeys所做的。@alexis我不同意。您在内存中创建一个新词典,然后将其分配给
dict\uu
,而不是就地修改对象。这对内存复杂性来说是非常糟糕的。对于这样的短代码段来说,这是完全可以的,但在一般情况下不是这样。这不是意见问题:python的常见做法是通过创建替换项而不是就地编辑来“过滤”集合。是否要修改现有的词典(您的代码是),或者添加一大堆附加值?当我有一个现有的字典时,我想重置这些值。明白了。因此,我的答案的第一部分不是你想要什么(而是看第二部分)