Python 如何创建可以解释未知密钥的dict

Python 如何创建可以解释未知密钥的dict,python,Python,我有这样一句话: dict_1={'a':1,'b':2,'c':3}。我有一个dict键列表,比如list_1=['a','b','c','*'],其中*可以是任何值。 我想创建一个可以处理*的dict,并将其赋值为0 如果可能的话,有什么想法吗?您似乎在描述python的内置语言 在您的示例中,您可以执行以下操作: from collections import defaultdict dict_1 = defaultdict(lambda: 0) dict_1["a"] = 1 pri

我有这样一句话:
dict_1={'a':1,'b':2,'c':3}
。我有一个dict键列表,比如
list_1=['a','b','c','*']
,其中
*
可以是任何值。 我想创建一个可以处理
*
的dict,并将其赋值为
0


如果可能的话,有什么想法吗?

您似乎在描述python的内置语言

在您的示例中,您可以执行以下操作:

from collections import defaultdict

dict_1 = defaultdict(lambda: 0)
dict_1["a"] = 1

print(dict_1["a"])  # will print 1 as that's what is set.
print(dict_1["any key"])  # will print 0, as it hasn't been set before.

因为您希望默认值为
0
,所以也可以使用
defaultdict(int)
作为
int()
返回
0
为什么不使用标准的
dict.get
方法呢

如果您使用
d.get(key,0)
而不是
d[key]
它将为您提供所需的行为

例如:

dict_1 = {'a': 1, 'b': 2, 'c' : 3}
dict_1.get('a', 0)    # returns 1
dict_1.get('Z', 0)    # returns 0

您可以通过以下方式为您的需求创建新词典:

dict_1 = {'a': 1, 'b': 2, 'c' : 3}
list_1 = ['a', 'b', 'c', '*']
# new dictonay with default value 0 for non-existing key in `dict_1`
new_dict = {l: dict_1.get(l, 0) for l in list_1}

我只希望dict_1仅在键不是
'a',b',c'
时返回0。如果它是三者之一,则在
dict_1
中返回它们各自的值。这与dict的工作原理完全相同,但当值未知时,它会快速将其设置为参数返回的值。所以,如果你把a,b,c设为它们需要的值,那么你已经在那里了。我在回答中详细阐述了这种行为。欢迎来到StackOverflow。只有代码的答案可能会让人困惑,特别是对于初学者。考虑编辑你的答案,包括一些解释或上下文。
dict_1 = {'a': 1, 'b': 2, 'c' : 3}
list_1 = ['a', 'b', 'c', '*']
# new dictonay with default value 0 for non-existing key in `dict_1`
new_dict = {l: dict_1.get(l, 0) for l in list_1}