计算列表中单词的重复次数

时间:2017-03-18 18:15:11

标签: python loops for-loop count

我正在尝试构建一个程序,如果用户输入名称,它将返回具有该名称的人数。如果他们输入'most',它将返回最常使用的名称。我尝试编写下面的代码,但这只是给了我每个单词的所有计数。

import re

data = ('Billy Bob', 'Misty', 'Leroy', 'Leroy', 'Leroy', 'Billy Bob', 'Betty Sue', 'Billy Bob', 'Betty Sue', 'Misty', 'Betty Sue', 'Betty Sue', 'Misty', 'Betty Sue', 'Horace', 'Misty', 'Betty Sue', 'Misty', 'Leroy', 'Betty Sue', 'Misty', 'Doug', 'Misty', 'Wilma', 'Jesse', 'Misty', 'Billy Bob', 'Betty Sue', 'Betty Sue', 'Leroy', 'Misty', 'Leroy', 'Jesse Jr', 'Betty Sue', 'Betty Sue', 'Misty', 'Misty', 'Misty', 'Betty Sue', 'Misty', 'Misty', 'Misty', 'Leroy', 'Leroy', 'Bailey', 'Peggy', 'Leroy', 'Billy Bob', 'Leroy', 'Leroy', 'Misty', 'Paris', 'Leroy', 'Leroy', 'Misty Mae', 'Leroy', 'Misty', 'Leroy', 'Bart', 'Big Daddy', 'Betty Sue', 'Billy Bob', 'Betty Sue', 'LeeAnne', 'Billy Bob', 'Leroy', 'Betty Sue', 'Leroy', 'Betty Sue', 'Misty', 'Rowdy', 'Billy Bob', 'Ricky', 'Misty', 'Billy Bob', 'Billy Bob', 'Billy Bob', 'EvaSue', 'Mark', 'Betty Sue', 'Leroy', 'Betty Sue', 'Billy Bob', 'Leroy', 'Leroy', 'Billy Bob', 'Billy Bob', 'Billy Bob', 'Billy Bob', 'Billy Bob', 'Misty', 'Rob', 'Betty Sue', 'SuelySue', 'Billy Bob', 'Misty', 'Betty Sue', 'Misty', 'Billy Bob', 'Betty Sue', 'Leroy', 'Misty', 'Billy Bob', 'Misty', 'Misty', 'Billy Bob', 'Billy Bob', 'Billy Bob', 'Billy Bob', 'Leroy', 'Jesse Jr Jr', 'Billy Bob', 'Grady', 'Leroy', 'Billy Bob', 'Leroy', 'Billy Bob', 'Betty Sue', 'Billy Bob', 'Misty', 'Louise', 'Leroy', 'Betty Sue', 'Leroy', 'Betty Sue', 'Leroy', 'Betty Sue', 'Betty Sue', 'Billy Bob', 'Leroy', 'Jenny Jae', 'Misty', 'Betty Sue', 'Billy Bob', 'Leroy', 'Billy Bob', 'Jesse', 'Misty', 'Misty', 'Leroy', 'Betty Sue', 'BJ', 'Misty', 'Leroy', 'Boris', 'Misty', 'Billy Bob', 'Pegs', 'Misty', 'Leslie', 'James', 'Melvin', 'Misty', 'Betty Sue', 'Mary Beth', 'Billy Bob', 'Betty Sue', 'Billy Bob', 'Misty', 'Betty Sue', 'Leroy', 'Billy Bob', 'Billy Bob', 'BethAnne', 'Leroy', 'Betty Sue', 'Bett', 'Billy Bob', 'Misty', 'Misty', 'Billy Bob', 'Leroy', 'Billy Bob', 'Billy Bob', 'Misty', 'Billy Bob', 'Raina', 'Betty Sue', 'Misty', 'Misty', 'Misty', 'Betty Sue', 'Mikey', 'Betty Sue', 'Billy Bob', 'Misty', 'Betty Sue', 'Leroy', 'Betty Sue', 'Billy Bob', 'Betty Sue', 'Billy Bob', 'Betty Sue', 'Louise Jr', 'Billy Bob', 'Misty', 'Leroy', 'Leroy', 'Billy Bob', 'Billy Bob', 'Misty', 'Leroy', 'Leroy', 'Leroy', 'Billy Bob', 'Betty Sue', 'Billy Bob', 'Betty Sue', 'Misty', 'Betty Sue', 'Betty Sue', 'Misty', 'Betty Sue', 'Horace', 'Misty', 'Betty Sue', 'Misty', 'Leroy', 'Betty Sue', 'Misty', 'Doug', 'Misty', 'Wilma', 'Jesse', 'Misty', 'Billy Bob', 'Betty Sue', 'Betty Sue', 'Leroy', 'Misty', 'Leroy', 'Jesse Jr', 'Betty Sue', 'Betty Sue', 'Misty', 'Misty', 'Misty', 'Betty Sue', 'Misty', 'Misty', 'Misty', 'Leroy', 'Leroy', 'Bailey', 'Peggy', 'Leroy', 'Billy Bob', 'Leroy', 'Leroy', 'Misty', 'Paris', 'Leroy', 'Leroy', 'Misty Mae', 'Leroy', 'Misty', 'Leroy', 'Bart', 'Big Daddy', 'Betty Sue', 'Billy Bob', 'Betty Sue', 'LeeAnne', 'Billy Bob', 'Leroy', 'Betty Sue', 'Leroy', 'Betty Sue', 'Misty', 'Rowdy', 'Billy Bob', 'Ricky', 'Misty', 'Billy Bob', 'Billy Bob', 'Billy Bob', 'EvaSue', 'Mark', 'Betty Sue', 'Leroy', 'Betty Sue', 'Billy Bob', 'Leroy', 'Leroy', 'Billy Bob', 'Billy Bob', 'Billy Bob', 'Billy Bob', 'Billy Bob', 'Misty', 'Rob', 'Betty Sue', 'SuelySue', 'Billy Bob', 'Misty', 'Betty Sue', 'Misty', 'Billy Bob', 'Betty Sue', 'Leroy', 'Misty', 'Billy Bob', 'Misty', 'Misty', 'Billy Bob', 'Billy Bob', 'Billy Bob', 'Billy Bob', 'Leroy', 'Jesse Jr Jr', 'Billy Bob', 'Grady', 'Leroy', 'Billy Bob', 'Leroy', 'Billy Bob', 'Betty Sue', 'Billy Bob', 'Misty', 'Louise', 'Leroy', 'Betty Sue', 'Leroy', 'Betty Sue', 'Leroy', 'Betty Sue', 'Betty Sue', 'Billy Bob', 'Leroy', 'Jenny Jae', 'Misty', 'Betty Sue', 'Billy Bob', 'Leroy', 'Billy Bob', 'Jesse', 'Misty', 'Misty', 'Leroy', 'Betty Sue', 'BJ', 'Misty', 'Leroy', 'Boris', 'Misty', 'Billy Bob', 'Pegs', 'Misty', 'Leslie', 'James', 'Melvin', 'Misty', 'Betty Sue', 'Mary Beth', 'Billy Bob', 'Betty Sue', 'Billy Bob', 'Misty', 'Betty Sue', 'Leroy', 'Billy Bob', 'Billy Bob', 'BethAnne', 'Leroy', 'Betty Sue', 'Bett', 'Billy Bob', 'Misty', 'Misty', 'Billy Bob', 'Leroy', 'Billy Bob', 'Billy Bob', 'Misty', 'Billy Bob', 'Raina', 'Betty Sue', 'Misty', 'Misty', 'Misty', 'Betty Sue', 'Mikey', 'Betty Sue', 'Billy Bob', 'Misty', 'Betty Sue', 'Leroy', 'Betty Sue', 'Billy Bob', 'Betty Sue', 'Billy Bob', 'Betty Sue', 'Louise Jr', 'Billy Bob', 'Misty', 'Leroy', 'Leroy', 'Billy Bob', 'Billy Bob', 'Betty Sue')

print('''Welcome to the White Valley Name Counter. Enter a name, or "most" to see what name is the most used in this great city!''')

print()
keepgoing = 'y'

while keepgoing == 'y':
    search = input("What name do you want to search for in White Valley database? ")
    data_list = list(data)
    i_data = set(data_list)
    for i in i_data:
        print((i, data_list.count(i)))
    keepgoing = input('''Want to search another name ("y" for yes)? ''')

我想这样做,以便我的代码会产生这样的输出:

Welcome to the White Valley Name Counter. Enter a name, or "most" to see what name is the most used in this great city!

What name do you want to search for in White Valley database? john

There are 0 people named john

Want to search another name ("y" for yes)? y

What name do you want to search for in White Valley database? Betty Sue

There are 79 people named Betty Sue

Want to search another name ("y" for yes)? y

What name do you want to search for in White Valley database? most

Billy Bob is most common. There are 93 of them

Want to search another name ("y" for yes)? n

2 个答案:

答案 0 :(得分:0)

您可以使用列表计数方法执行此操作。

ls = [*names*]     #note this is a list!
while True:
    x = raw_input("What name do you want to search for in White Valley database? ")

if x != "most":
    print "There are %s people named %s" % (ls.count(x), x)
else:
    max_name = max(set(ls), key=ls.count)    #gets the most common name
    max_count = ls.count(max_name)
    print "There are %s people named %s" %(max_count, max_name)

y = raw_input("Want to search another name ('y' for yes)?")
if y == "n": break

答案 1 :(得分:0)

更新循环并添加most的条件。

while keepgoing == 'y':

    search = input("What name do you want to search for in White Valley database? ")

    data_list = list(data)

    print(data_list)

    print("There are {} people nammed {}".format(data_list.count(search),search))

    keepgoing = input('''Want to search another name ("y" for yes)? ''')

使用Counter,它们真的让你的生活更轻松。

相关问题