我有一个这样的字典:
dict_1 = {'a': 1, 'b': 2, 'c' : 3}
。我有list_1 = ['a', 'b', 'c', '*']
之类的字典键列表,其中*
可以是任何值。
我想创建一个可以处理*
并将其赋值为0
有什么可能的想法吗?
答案 0 :(得分:2)
您为什么不只使用标准的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
答案 1 :(得分:1)
您似乎正在描述python的内置defaultdict。
在您的示例中,您可以执行以下操作;
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
。
答案 2 :(得分:0)
# if key not in dict_1 will print 0
for key in list_1:
print(dict_1.get(key, 0))
答案 3 :(得分: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}