Как кто-то еще указал, термины 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
.