如何创建可以解释未知密钥的字典

时间:2018-09-06 03:00:34

标签: python

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

的字典。

有什么可能的想法吗?

4 个答案:

答案 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}