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回1回発生

4 1回発生

だから私は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 に答える
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 に答える