0

数字のリストがある場合 (例1 2 3 3 2 2 2 1 3 4 5 3:-)、Python で辞書を使用して、リスト内の各数字の出現回数をカウントするにはどうすればよいですか? したがって、出力は次のようになります。

数字をスペースで区切って入力してください :1 2 3 3 2 2 2 1 3 4 5 3

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

1 occurs 2 times

3 occurs 4 times

2 occurs 4 times

5 occurs one time

4 occurs one time 

また、数値が 1 回だけ発生する場合、出力は「1 回」になるはずです。

これは私がこれまでに持っているものです:

numbers=input("Enter numbers separated by spaces:-")
count={}
for number in numbers:
    if number in count:
        count[number] = count[number]+1
    else:
        count[number] = 1

print(number)

しかし、私の出力は最後の数字になります.i、入力は誰かが私を助けることができますか?

OK、これは私が今持っているものです:

numbers = input("Enter numbers separated by spaces:-") # i.e. '1 2 3 3 2 2 2 1 3 4 5 3'
my_list = list(map(int, numbers.strip().split(' ')))
count = {}
for x in set(my_list):
   count[x] = my_list.count(x)
print(count)
for key, value in count.items():
    if value == 1:
         print('{} occurs one time'.format(key))
    else:
         print('{} occurs {} times'.format(key, value))

これは私が今持っているもので、かなり良いようです。改善する方法があれば教えてください。みんなどうもありがとう

4

4 に答える 4

1

カウンターを試す:

>>> import collections
>>> number_string = '1 2 3 3 2 2 2 1 3 4 5 3'
>>> number_list = number_string.split(' ') # provide a list split on the spaces
>>> counts = collections.Counter(number_list)
>>> counts
Counter({'2': 4, '3': 4, '1': 2, '4': 1, '5': 1})

また、次のように数えることもできます。

>>> counts = collections.Counter()
>>> for l in "GATTACA":
...     counts[l] +=1
... 
>>> counts
Counter({'A': 3, 'T': 2, 'C': 1, 'G': 1})

これをうまく印刷するには:

import collections

def print_counts_in_spaced_string(number_string):
    number_list = number_string.split(' ') # provide a list split on the spaces
    counts = collections.Counter(number_list)
    for key, value in counts.items():
        format_string = '{key} occurs {value} {times}'
        if value == 1:
            value, times = 'one', 'time'
        else:
            times = 'times'
        print(format_string.format(key=key, value=value, times=times))

number_string = '1 2 3 3 2 2 2 1 3 4 5 3'
print_counts_in_spaced_string(number_string)

どちらが印刷されますか:

1 occurs 2 times
2 occurs 4 times
3 occurs 4 times
4 occurs one time
5 occurs one time
于 2013-11-14T23:32:53.323 に答える
0

あなたの問題は、空の から始めることですdict。これは、チェックif number in countが常に失敗することを意味します (countは空の辞書であるため)。

collections.Counter他の人が提案したように使用することをお勧めします。しかし、本当にコードをデバッグしたい場合は、次のようにします。

numbers=input("Enter numbers seperated by spaces:-")
count={}
for number in numbers.split(): # ignore all the white-spaces
  if number not in count:
    count[number] = 0
  count[number] += 1
for num,freq in count.items():
  print(num, "occurs", freq, "times")
于 2013-11-14T23:44:21.127 に答える