1

样本输出

输入以空格分隔的数字:1 2 3 3 2 2 2 1 3 4 5 3

{'1':2,'3':4,'2':4,'5':1,'4':1}

1 发生 2 次

3 发生 4 次

2 出现 4 次

5 发生一次

4 发生一次

所以我是 python 的新手,但我想这样开始:

d = {}     
user = input("Enter numbers separated by spaces :") 
data = user.split() 

除了我尝试的每个循环都一直说我不能将 str() 转换为 int(),我会很感激任何帮助,我已经盯着这个问题几个小时了..这是我在输入是字符串时尝试的东西,试图为字典实现类似的东西

def countdigits (aString):  
  c = 10 * [0]

  for e in aString: 
    c[int(e)] += 1 

  return c 

def main (): 
  n = 0 

  for v in (countdigits(str(input('Enter a string: ')))): 
    if v == 1: 
      print(n, "occurs 1 time")
    elif v!=0:
      print(n, "occurs", v, "times")

    n += 1 

main()

对于给定的输出,我想要一个类似的解决方案(但使用字典)

4

3 回答 3

3

尝试

d = {i:data.count(i) for i in data}

for k,v in d:
    print "{0} occurs {1} times\n".format(k,v)

或喜欢以下评论中的示例:

import collections

for a,b in collections.Counter(data).items():
    print "{0} occurs {1} times\n".format(a,b)
于 2013-04-03T01:35:49.707 回答
2

我只能猜测你正在尝试这样的事情

    >>> 用户 = “1 2 3 3 2 2 2 1 3 4 5 3”
    >>> 数据 = int(用户)
    回溯(最近一次通话最后):
      文件“”,第 1 行,在
    ValueError:int() 的无效文字,基数为 10:'1 2 3 3 2 2 2 1 3 4 5 3'

像这样的东西:

data = user.split()
for item in data:
   number = int(item)

应该可以正常工作。请注意,您可能不需要int为此问题转换为。留下数字 astr应该也可以

于 2013-04-03T01:37:38.067 回答
1

不导入任何东西

nk="1 2 3 3 2 2 2 1 3 4 5 3"
nk=nk.split()
result={}
for x in nk:
    result.setdefault(x,0)
    result[x]+=1
print result

输出

{'1': 2, '3': 4, '2': 4, '5': 1, '4': 1}
于 2013-04-03T04:08:18.403 回答