总的来说,你是在正确的轨道上,但我认为你的算法有一些问题。您想要的是创建一个以频率为键、以单词为值的词典。首先,我将创建一个函数来返回一个单词中的元音数量。您的字典值应该是列表,这样您的结果将包括具有相同元音比例的单词。
迪克特
方法setDefault是这方面的理想方法。返回的值
DICT[分钟(DICT)]
因为这就是你要找的答案。
类似于:
- ...snip...
- words = sentence.lower().split()
- least_characters = {}
- for word in words:
- least_characters.setdefault(vowel_count(word)/float(len(word)), []).append(word)
- return least_characters[min(least_characters)]
我更改了一些标识符名,这样会更直观。
元音计数
是返回单词中的元音数量的函数。这可以归结为一行清单的理解--可能是:
- len([letter for letter in word if letter in ['a', 'e', 'i', 'o', 'u']])