Я получаю результат: 2,1,8,0,0, он должен быть: 2,1,3,1,4, я использую PyCharm CE 2016.2.3 и Python 3.6.6 Спасибо за ваше время !
lotto = {
'1': 0,
'2': 0,
'3': 0,
'4': 0,
'5': 0
}
test_list = [1, 1, 2, 3, 3, 3, 4, 5, 5, 5, 5]
for i in test_list:
if test_list[i] == 1:
lotto['1'] += 1
if test_list[i] == 2:
lotto['2'] += 1
if test_list[i] == 3:
lotto['3'] += 1
if test_list[i] == 4:
lotto['4'] += 1
if test_list[i] == 5:
lotto['5'] += 1
for i in lotto:
print(lotto[i], end=",")
Вы можете повторно реализовать свой код с collections.Counter
:
from collections import Counter
test_list = [1, 1, 2, 3, 3, 3, 4, 5, 5, 5, 5]
lotto = Counter(map(str, test_list))
print(','.join(map(str, lotto.values())))
Ваш код должен быть:
lotto = {
'1': 0,
'2': 0,
'3': 0,
'4': 0,
'5': 0
}
test_list = [1, 1, 2, 3, 3, 3, 4, 5, 5, 5, 5]
for i in test_list:
i = str(i)
lotto[i] = lotto[i] + 1
for i in lotto:
print(lotto[i], end=",")
Браун!
Вы можете заменить цикл for лучшим способом использования списков в python:
for number in test_list:
lotto[str(number)] += 1
Используйте номера в test_list для ссылки в ключевом значении.
lotto = {
'1': 0,
'2': 0,
'3': 0,
'4': 0,
'5': 0 }
test_list = [1, 1, 2, 3, 3, 3, 4, 5, 5, 5, 5]
for number in test_list:
lotto[str(number)] += 1
И результат:
{'1': 2, '2': 1, '3': 3, '4': 1, '5': 4}
Похоже, вам нужно заменить test_list [i] только i, потому что я уже выполняет итерацию через test_list и проверяет каждый номер, а не индекс. Кроме того, только для хорошей практики, после первого блока if, измените каждый, если для elif.
lotto = {
'1': 0,
'2': 0,
'3': 0,
'4': 0,
'5': 0
}
test_list = [1, 1, 2, 3, 3, 3, 4, 5, 5, 5, 5]
for i in test_list:
if i == 1:
lotto['1'] = lotto['1'] + 1
elif i == 2:
lotto['2'] += 1
elif i == 3:
lotto['3'] += 1
elif i == 4:
lotto['4'] += 1
elif i == 5:
lotto['5'] += 1
i+=1
for i in lotto:
print(lotto[i], end=",")
test_list[i] == 1
наi==1
.for ... in ...
не индексирует список, а выполняет итерацию по каждому элементу в списке.