我有一本动物园动物词典。 我想把它放在一个嵌套的字典中,但是因为该物种尚未添加到字典中,所以出现了KeyError。
def add_to_world(self, species, name, zone = 'retreat'):
self.object_attr[species][name] = {'zone' : zone}
有没有快捷方式来检查字典中是否有该物种并在没有时创建它,还是我必须手动检查是否已添加该物种?
我有一本动物园动物词典。 我想把它放在一个嵌套的字典中,但是因为该物种尚未添加到字典中,所以出现了KeyError。
def add_to_world(self, species, name, zone = 'retreat'):
self.object_attr[species][name] = {'zone' : zone}
有没有快捷方式来检查字典中是否有该物种并在没有时创建它,还是我必须手动检查是否已添加该物种?
def add_to_world(self, species, name, zone = 'retreat'):
self.object_attr.setdefault(species, {})[name] = {'zone' : zone}
print {}.setdefault('species', {})['name'] = {'zone' : 'thezone'}
时,我遇到了一个 SyntaxError
错误。我在这里有什么误解吗? - kramer65print
语句中使用。 - kindalld ={}; d.setdefault('species', {})['name'] = {'zone': 'thezone'}; print d
- kindall这是使用defaultdict并将字典作为值的示例。
>>> from collections import defaultdict
>>> d = defaultdict(dict)
>>> d["species"]["name"] = {"zone": "1"}
>>> d
defaultdict(<type 'dict'>, {'species': {'name': {'zone': '1'}}})
>>>
如果您想要更深层次的嵌套,您需要编写一个返回defaultdict(dict)的函数。
def nested_defaultdict():
return defaultdict(dict)
# Then you can use a dictionary nested to 3 levels
d2 = defaultdict(nested_defaultdict)
d2["species"]["name"]["zone"] = 1
可以使用collections.defaultdict
实现字典值的自动创建。