初始化空字典后为何可执行`if entry in langs_count`?求解
问题解答
为什么空字典能执行if entry in langs_count.keys()?
Python里,哪怕是空字典调用keys()方法,也会返回一个空的可迭代视图对象,不会触发报错。判断entry in这个空对象时,结果只会是False,完全符合语法规范,所以这条语句能正常执行。
字典的内容是什么,怎么来的?
- 初始状态下
langs_count是空字典,没有任何键值对。 - 代码通过循环遍历
df['lang']列的每个entry(也就是每条推特的语言标识),逐步填充字典:- 第一次遇到某类语言时,
entry in langs_count.keys()结果为False,会执行else分支:把该语言作为键,值设为1,字典里就新增了第一个对应键值对。 - 后续再遇到同一语言的
entry时,entry in langs_count.keys()结果为True,就执行if分支:把对应键的值加1,完成计数累加。
- 第一次遇到某类语言时,
- 循环结束后,字典里就存储了每种语言在推特数据中出现的次数。
举个简化例子,假设df['lang']的内容是['en', 'es', 'en']:
- 第一次循环
entry='en':空字典的keys()为空,判断为False,执行else,langs_count变成{'en':1}。 - 第二次循环
entry='es':keys()是['en'],'es'不在其中,执行else,langs_count变成{'en':1, 'es':1}。 - 第三次循环
entry='en':'en'在keys()里,执行if,en的值加1,langs_count变成{'en':2, 'es':1}。
最终打印的就是这个统计完成的字典。
内容的提问来源于stack exchange,提问作者David Siedoma
相关产品推荐
相关产品推荐

