有人能解释一下,在下面的例子中,字典“逆”的赋值是如何发生的?
def invert_dict(d):
inverse = {}
for key in d:
new_key = d[key]
inverse.setdefault(new_key, []).append(key)
return inverse
letters_in_word = {"mine": 4, "yours": 5, "ours": 4, "sunday": 6, "friend": 6, "fun": 3, "happy": 5, "beautiful": 8}
print (invert_dict(letters_in_word))
当然,输出是正确的:
{8:['美丽'],3:['乐趣'],4:['我的','我们的'],5:['快乐','你的'],6:['星期天','朋友']}
Python3.x文档说明:
setdefault(key[, default]):
If key is in the dictionary, return its value. If not, insert key with a value of default and return default. default defaults to None.
我不能用一个例子来说明:
我知道在第四节末尾我错了,因为事实上我们的列表已经被分配到了键“5”。我不明白的是事情发生的时间点-我们好像刚回来,真的应该分配给:
^{pr2}$但是,如果我像这样运行代码,就会得到错误-'NoneType' object has no attribute 'append'
。
任何解释都是值得赞赏的-我想我一定是遗漏了这两种方法是如何相互作用的。
附言:这是我的第一个问题,所以如果问题的性质/结构不是“这里的事情是怎么做的”的,我深表歉意。让我知道如何改进,我会尽力做到的!
打印语句是了解程序中发生的事情的一种非常有用且简单的方法:
输出:
^{pr2}$还有一个非常有用的调试器,比如PyCharm中的调试器。试试看。在
相关问题 更多 >
编程相关推荐