在 2016年10月19日星期三 UTC+8下午3:17:18,Peter Otten写道: > chenyong20...@gmail.com wrote: > > > 在 2016年10月19日星期三 UTC+8上午11:46:28,MRAB写道: > >> On 2016-10-19 03:15, chenyong20...@gmail.com wrote: > >> > Thanks Peter and Anssi for your kind help. Now I'm ok with the first > >> > question. But the second question still confused me. Why "it seems that > >> > after root = root.setdefault(ch,{}) tree['a'] and root are the same > >> > object" and follows tree['a']['b']? Thanks. > >> > > >> You call the .setdefault method with a key and a default value. > >> > >> The .setdefault method does this: if the key is in the dict, it returns > >> the associated value, else it puts the key and the default into the dict > >> and then returns the default. > > > > thanks for the reply. I understand this. I'm now confused on why tree got > > its magic result. > > Perhaps it is easier to understand if you rewrite the function without > setdefault()? > > def add_to_tree(root, value_string): > print "root is %s, value_string is %s" % (root, value_string) > for ch in value_string: > print "ch is %s" % ch > if ch not in root: # always true if the root arg is an empty dict > root[ch] = {} > root = root[ch] # inside the function the inner dict becomes the new > # root > print "root is", root > print "tree is", tree
please forgive my stupid. I still can't follow this. -- https://mail.python.org/mailman/listinfo/python-list