单词是在python中默认定义的还是我错过了什么?



刚开始通过一些基础课程学习python并进入我的第一个练习,我无法弄清楚解决方案是如何工作的。我已经在谷歌上搜索了大约 30 分钟,但通过谷歌搜索和盲目搜索论坛找到正确答案是一个艰难的话题(我认为这是因为我的问题集中在编程中使用"单词"......在尝试搜索时会出现很多红鲱鱼)

任务:创建字符串中所有唯一单词的字典,以及它们的出现次数。

基于他们给出的解决方案的解决方案,对我有用,如下所示:

sample_string="The quick quick brown brown brown fox fox jumps jumps jumps jumps"
list_words=sample_string.split()
dictionary = {}
for word in list_words:
dictionary[word]=list_words.count(word)
dictionary

我的问题是,我无法完全理解这是如何工作的。具体来说,我不明白发生了什么的是这两行

for word in list_words:
dictionary[word]=list_words.count(word)

它怎么知道这里的"词"是什么?我觉得我一直在遵循我路线上的一切,直到这两条线。我完全理解它如何使用 split 转换为列表以及我们如何创建一个空字典,但我不知道它如何知道第 4 行中的"单词"是什么,并且真的不知道第五行是如何工作的,然后它神奇地吐出了我们想要完成的内容!

任何帮助将不胜感激!我也是这些论坛的新手,所以任何失礼请告诉我。

首先,你的字符串中有几个单词。

sample_string="The quick quick brown brown brown fox fox jumps jumps jumps jumps"

其次,使用 split() 方法分隔每个单词。通过将参数留空,它默认为在空格处拆分。由于 split 方法不会修改原始字符串,因此创建一个 nee 变量 (list_words) 并将结果存储在其中:

list_words=sample_string.split()

创建空字典

dictionary = {}

现在,使用 for 循环遍历字典的每个元素。如果你知道 for 循环是如何工作的,你就知道 它迭代数组的每个元素。例如,下面的字符串:

string = "Hello Pinder"
for s in string:
print(s) 

将打印每个字符(包括空格)

输出:

H
e
l
l
o
P
i
n
d
e
r

请注意,字母 s 可以是您想要的任何内容。它只是意味着它将是用于迭代每个元素的变量。话虽如此,您可以使用:

string = "Hello Pinder"
for pinder in string:
print(pinder) 

但是使用更有意义的东西总是很好的,例如:

for word in words:

for e in elements:

等。。。

如果你有一个字典并使用 for 循环,它将返回该字典中的每个键:

fruits = {
'apple':0.5,
'banana':1.49
}
for f in fruits:
print(f)

输出:

apple
banana

如果要返回值,而不是返回键,只需执行以下操作:

print(fruits[f])

输出:

0.5
1.49

同样,您可以使用以下方法获得相同的结果:

keys() 方法返回所有键:

for f in fruits.keys():
print(f)

输出:

apple
banana

values() 方法返回所有值:

for f in fruits.values():
print(f)

输出:

0.5
1.49

如果要更改键的值,只需执行以下操作即可。比如说,我们想把苹果的价格从0.5美分改成0.6美分。添加密钥的名称并分配新值。

fruits['apple'] = 0.6
print(fruits)

输出:

{'apple': 0.6, 'banana': 1.49}

所以这正是您提供的示例中发生的情况。你在这里拥有的是: 首先,遍历字典中的每个元素:

for word in list_words:

现在,获取正在迭代的每个元素并分配一个新值,在本例中,该值是每个单词每次出现的总数

dictionary[word]=list_words.count(word)

相关内容

最新更新