加入collections.defaultdict
在Python 2.5大大降低用于需要dict
的setdefault
方法.这个问题适合我们的集体教育:
setdefault
今天在Python 2.6/2.7中还有什么用处?setdefault
被取代了collections.defaultdict
?假设我有这段代码:
my_dict = {}
default_value = {'surname': '', 'age': 0}
# get info about john, or a default dict
item = my_dict.get('john', default_value)
# edit the data
item[surname] = 'smith'
item[age] = 68
my_dict['john'] = item
Run Code Online (Sandbox Code Playgroud)
如果我们现在检查default_value的值,问题就变得清晰了:
>>> default_value
{'age': 68, 'surname': 'smith'}
Run Code Online (Sandbox Code Playgroud)
很明显,它my_dict.get()
没有返回default_value 的值,而是返回指针(?).
可以通过将代码更改为:
item = my_dict.get('john', {'surname': '', 'age': 0})
Run Code Online (Sandbox Code Playgroud)
但这似乎不是一个很好的方法.有什么想法,评论?
我是python的新手.我想写这个
if x not in d:
d[x] = {}
q = d[x]
Run Code Online (Sandbox Code Playgroud)
使用三元运算符以更紧凑的方式
q = d[x] if x in d else (d[x] = {})
Run Code Online (Sandbox Code Playgroud)
但这会给出语法错误.我错过了什么?
我想要一本默认为 None 的字典。我有两种实现方法:1)使用collections.defaultdict并将默认值设置为None。 https://docs.python.org/2/library/collections.html
2)使用普通字典但使用.get()来获取值。当key不存在时,默认返回None。
哪种方式更好?