为了账号安全,请及时绑定邮箱和手机立即绑定

Python - 遍历列表以计算元音并将数字放入字典中

Python - 遍历列表以计算元音并将数字放入字典中

慕勒3428872 2021-11-23 19:27:38
我需要编写一个程序,其中有一个县名列表,我需要找到该列表中的 5 个元音中的每个元音的数量,并将这 5 个数字放入字典中。我想做一个 for 循环来遍历每个元音,每次遍历循环时,在字典中添加一个新条目,以元音为键,以计数为值。它应该打印:{'a':4, 'e':4, 'i':4, 'o':4, 'u':4}。我不知道有多少元音,所以我只为示例中的所有值写了 4。县的列表真的很长,所以我只是在这里粘贴了一个缩短的版本。counties = ['Autauga','Baldwin','Barbour','Bibb','Blount','Bullock','Butler','Calhoun','Chambers','Cherokee','Chilton','Choctaw','Clarke','Clay','Cleburne','Coffee','Colbert','Conecuh','Coosa','Covington','Crenshaw','Cullman','Dale','Dallas']letter = ('a', 'e', 'i', 'o', 'u') counter = 0 d={} for it in clist:    def func(clist, letterlist, count):         count += clist.count(letterlist)        print("the number of vowels:" count)         return count     func(counties, letter, counter)如您所见,我对 Python 非常陌生,不知道自己在做什么。我不能让它工作,绝对不能在字典中得到它。任何帮助,将不胜感激!
查看完整描述

2 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

您可以使用嵌套for循环遍历counties列表和每个县的字符,如果字符在vowels列表中,则以字符为键继续递增输出字典:


d = {}

for county in counties:

    for character in county.lower():

        if character in vowels:

            d[character] = d.get(character, 0) + 1

d 变成:


{'a': 16, 'u': 10, 'i': 4, 'o': 14, 'e': 14}

或者,您可以使用collections.Counter从字符串列表中提取元音字符的生成器表达式:


from collections import Counter

Counter(c for county in counties for c in county.lower() if c in vowels)


查看完整回答
反对 回复 2021-11-23
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

我相信您正在尝试执行我在下面列出的操作(我省略了您的国家/地区列表)。我尝试添加注释,您可以添加打印行以查看每段代码在做什么。


vowels = ('a', 'e', 'i','o', 'u') 


d={} 


## select countries 1 at a time

for country in countries:

    # convert each country to lowercase, to match list of vowels, otherwise, you need to deal with upper and lowercase

    country = country.lower()

    # select letter in country 1 at a time

    for i in range(len(country)):

        # check to see whether the letter selected in the country, the ith letter, is a vowel

        if (country[i] == 'a') or (country[i] == 'e') or (country[i] == 'i') or (country[i] == 'o') or (country[i] == 'u'):

            # if the ith letter is a vowel, but is not yet in the dictionary, add it

            if (country[i]) not in d:

                d[country[i]] = 1

            # if the ith letter is a vowel, and is already in the dictionary, then increase the counter by 1

            else:

                d[country[i]] += 1


print(d) # {'a': 16, 'u': 10, 'i': 4, 'o': 14, 'e': 14}


查看完整回答
反对 回复 2021-11-23
  • 2 回答
  • 0 关注
  • 163 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信