我刚刚开始学习python并找到了该代码段。应该计算一个单词出现的次数。我想,对你们所有人来说,这似乎都是合乎逻辑的,但是对我来说不幸的是,这没有任何意义。
str = "house is where you live, you don't leave the house."
dict = {}
list = str.split(" ")
for word in list: # Loop over the list
if word in dict: # How can I loop over the dictionary if it's empty?
dict[word] = dict[word] + 1
else:
dict[word] = 1
所以,我的问题是,如何遍历字典?字典不应该是空的,因为我没有在里面传递任何东西吗? 也许我不够聪明,但我看不出逻辑。有人可以解释一下它是如何工作的吗? 非常感谢
答案 0 :(得分:-2)
正如其他人指出的那样,术语str
,dict
和list
不应用于变量名,因为它们是在Python中执行特殊功能的实际Python命令。例如,str(33)
将数字33转换为字符串“ 33”。当然,Python通常很聪明,足以理解您想将这些东西用作变量名,但是为了避免混淆,您确实应该使用其他东西。因此,以下是具有不同变量名的相同代码,并在循环末尾添加了一些print
语句:
mystring = "house is where you live, you don't leave the house."
mydict = {}
mylist = mystring.split(" ")
for word in mylist: # Loop over the list
if word in mydict:
mydict[word] = mydict[word] + 1
else:
mydict[word] = 1
print("\nmydict is now:")
print(mydict)
如果运行此命令,将得到以下输出:
mydict is now:
{'house': 1}
mydict is now:
{'house': 1, 'is': 1}
mydict is now:
{'house': 1, 'is': 1, 'where': 1}
mydict is now:
{'house': 1, 'is': 1, 'where': 1, 'you': 1}
mydict is now:
{'house': 1, 'is': 1, 'live,': 1, 'where': 1, 'you': 1}
mydict is now:
{'house': 1, 'is': 1, 'live,': 1, 'where': 1, 'you': 2}
mydict is now:
{"don't": 1, 'house': 1, 'is': 1, 'live,': 1, 'you': 2, 'where': 1}
mydict is now:
{"don't": 1, 'house': 1, 'is': 1, 'live,': 1, 'leave': 1, 'you': 2, 'where': 1}
mydict is now:
{"don't": 1, 'house': 1, 'is': 1, 'live,': 1, 'leave': 1, 'you': 2, 'where': 1, 'the': 1}
mydict is now:
{"don't": 1, 'house': 1, 'is': 1, 'live,': 1, 'house.': 1, 'leave': 1, 'you': 2, 'where': 1, 'the': 1}
因此mydict
确实会使用找到的每个单词进行更新。这也应该使您更好地了解字典在Python中的工作方式。
要清楚一点,您不是在字典上“循环”。 for
命令开始循环; if word in mydict:
命令不是循环,而只是一个比较。它查看mydict
中的所有键,并查看是否存在与word
相同的字符串。
此外,请注意,由于您仅将句子拆分为字符串,因此单词列表同时包含"house"
和"house."
。由于这两个词不完全匹配,因此将它们视为两个不同的词,这就是为什么您在字典中看到'house': 1
和'house.': 1
而不是'house': 2
的原因。