def add_to_world(self, species, name, zone = 'retreat'):
self.object_attr[species][name] = {'zone' : zone}
是否有快捷方式检查该物种是否在字典中,如果不存在则创建它,或者我是否必须做很长时间并手动检查是否已添加该物种?
答案 0 :(得分:14)
def add_to_world(self, species, name, zone = 'retreat'):
self.object_attr.setdefault(species, {})[name] = {'zone' : zone}
答案 1 :(得分:10)
以下是使用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
答案 2 :(得分:9)
字典值的自动生成可以由collections.defaultdict
执行。