社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python,使用字典和集合来跟踪单词的所有出现

muyustan • 5 年前 • 1648 次点击  

我在努力解决 this 问题:

出现次数。输出顺序应与 输入单词的出现顺序。参见示例输入/输出 澄清。

注意:每个输入行以“\n”字符结尾。

第一行包含整数n。

接下来的n行每行包含一个

输出格式

输出2行。在第一行,输出不同单词的数量 从输入。在第二行,输出出现的次数 根据每个词在输入中的外观来区分它们。

我已经实现了这样的解决方案,

# Enter your code here. Read input from STDIN. Print output to STDOUT

n  = int(input())

mySet = set()
myDict = {}

for i in range(n):
    inp = input()[:-1]
    if inp not in mySet:
        mySet.add(inp)
        myDict[inp] = 1
    else:
        myDict[inp] += 1

print(len(mySet))
# print(' '.join(list(map(str, myDict.values()))))
print(*myDict.values())

如果这个词不在 ,将其添加到集合并在 密迪克特 以单词为键,1为值。

然而,一半的测试用例是成功的,而其余的则是“错误的答案”。所以,我想知道,有谁能指出我遗漏了什么添加到这个代码中?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/55887
 
1648 次点击  
文章 [ 2 ]  |  最新文章 5 年前
sahasrara62
Reply   •   1 楼
sahasrara62    5 年前
n = int(input())
dic  = {}

for _ in range(n):
  w = input()
  if w in dic.keys():
    dic[w]+=1
  else:
    dic.update({w:1})

print(len(dic.keys()))
print(*dic.values())
Heap Overflow
Reply   •   2 楼
Heap Overflow    5 年前

你的错误是 inp = input()[:-1] [:-1] 切掉这个词的最后一个字符。我想你是想删除换行符,但是 input() 已经是了“ stripping a trailing newline

>>> [input() for _ in range(2)]
foo
bar
['foo', 'bar']

更简单的解决方案,顺便说一句:

from collections import Counter

ctr = Counter(input() for _ in range(int(input())))
print(len(ctr))
print(*ctr.values())

from collections import Counter

ctr = Counter(map(input, [''] * int(input())))
print(len(ctr))
print(*ctr.values())

另一个:

from collections import Counter
import sys

next(sys.stdin)
ctr = Counter(map(str.strip, sys.stdin))
print(len(ctr))
print(*ctr.values())

这一个读整行,所以这里的字符串 包括换行符。那没关系,如果 全部的 strip 每一行都有。叹息。