最佳方法是对数组进行索引

2024-06-01 09:40:50 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我想知道不同民族的名字。用户输入名称直到输入-1,一旦输入-1,循环就会中断

一旦进入,然后我试图制表输出像这样的东西

姓名:约翰·麦克斯·琼

出现次数:4 1 2

发生率:20%10%30%

#!/usr/bin/python

names = ["John","Max","Joan"]

lst = []

while True:

    lst = raw_input("What is your name?")
    if lst == "-1":
        break
    input_list = lst.split()



print "Names" '[%s]' % ' '.join(map(str, names))

我不知道如何用用户输入的次数来增加名称的值——假设用户输入john,john,max,joan-joan-joan,那么我需要增加john两次,max一次,joan三次。你知道吗

我知道我可以使用[0]引用名称的不同部分,例如,它是第一项,但我不知道如何增加所有相关部分。你知道吗


Tags: 用户名称inputnamesusr名字john次数
2条回答

您可以使用^{}对给定输入中出现的名称进行计数和累加:

counter = collections.Counter()
names = ["John", "Max", "Joan"]

while True:
    lst = raw_input("What is your name?")
    if lst == "-1":
        break

    lst = [name for name in lst.strip().split() if name in names]
    names.update(collections.Counter(lst))

print "names : {}".format(" ".join(names))
print "No of occurrences : {}".format(" ".join(map(str, names.values())))

请注意,我假定输入中的名称用空格隔开。

计算多字串中的字频:

import sys
from collections import defaultdict

WORDS = """Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed 
do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim 
ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip 
ex ea commodo consequat."""


d = defaultdict(lambda: 0)
for word in WORDS.split():
    d[word] += 1 

for key in ['in', 'et', 'ut', 'sed']:
    print(key, ':\t', str(d[key]))

输出:

in :     0
et :     1
ut :     2
sed :    1

一个人是否将单词规范化为小写取决于问题域;如果发问者想用他收到的名字来做这件事,那就是循环中的data[word.lower()] += 1,然后如果他愿意的话,他可以在输出中重新大写第一个字母。你知道吗

相关问题 更多 >