2017-01-12 3 views
-4

У меня есть массив из числа которых я изменен на строкуКак вы рассчитываете строки в приращении?

a="1423" 
astr=str(a) 
aspl=list(astr) 

я должен иметь [ '1', '4', '2', '3']. Я хотел подсчитать, сколько 1 ~ 9 в массиве так, чтобы 1 = 1 раз (а), 2 = 1 раз (а) ... 5 = 0 раз, 6 = 0 раз (с) ...

Мое решение это было

r=0 
for r > 11: 
    b = aspl.count(r) 

, но так как это строка, этот метод не работает. Я попытался с помощью

b = aspl.count('r') 

то, как вы могли догадаться, это выглядит только для г. Итак, как бы вы это сделали?

Заранее спасибо.

ответ

5

модуль питона collections предлагает Counter только для этого:

from collections import Counter 

a = '032143487214093120' 

count = Counter(a) 
print(count) 
# Counter({'2': 3, '4': 3, '1': 3, '0': 3, '3': 3, '9': 1, '7': 1, '8': 1}) 

, а затем распечатать с

for digit in (str(i) for i in range(10)): 
    print('{}: {}x'.format(digit, count[digit])) 

# 0: 3x 
# 1: 3x 
# ... 
# 5: 0x 
# ... 

, если вы настаиваете, что также цифры, которые не встречаются в вашей строке, отображаются в счетчике, вы можете инициализировать счетчик будет все цифры установлены в ноль:

count = Counter({str(i): 0 for i in range(10)}) 
print(count) # Counter({'2': 0, '4': 0, '9': 0, '0': 0, '8': 0, '3': 0, 
       #   '1': 0, '7': 0, '5': 0, '6': 0}) 
count.update(a) 
print(count) # Counter({'2': 3, '4': 3, '0': 3, '3': 3, '1': 3, '9': 1, 
       #   '8': 1, '7': 1, '5': 0, '6': 0}) 
+1

ОП хочет напечатать числа, недоступные в строке как 0, которые не будут присутствовать в случае вашего решения –

+1

@MoinuddinQuadri значение по умолчанию в поле 'Counter 'равно нулю. 'print (Counter() ['a'])' prints' 0' –

+0

Да, это правда, но ключ * number * не будет доступен в dict до и если вы не сделаете явный вызов ему. –

1
for i in range(10): 
    print s.count(str(i)) 

Я думаю ...

0

Вот еще один из возможных решений, которое генерирует результаты в виде серии кортежей:

s = '1423' 
numbers = list(range(1, 10)) 
print(list((i, s.count(str(i))) for i in numbers)) 

Выходной

[(1, 1), (2, 1), (3, 1), (4, 1), (5, 0), (6, 0), (7, 0), (8, 0), (9, 0)] 
Смежные вопросы