2015-10-19 2 views
-1

Я написал программу, в которой я рассчитываю, что частота письма возникла в строке.как отсортировать словарь и получить только первый и последний элемент

Input: AAAABBBBBCCDEEEEEEEEEEFFF 

Я хочу, чтобы мой выход быть только те буквы, которые произошли наиболее и наименьшее число раз, и сколько раз они произошли.

import sys 
seq=sys.argv[1] 
count = {} 
for i in seq: 
    if count.has_key(i): 
    count[i] += 1 
    else: 
    count[i] = 1 

for i in sorted(count, key=count.get, reverse=True): 
    print i, count[i] 

выход:

Actual Output: 
E:10, B:5, A:4, F:3, C:2, D:1 

Expected Output: 
E: 10 , D: 1 
+1

Как и 'collections.Counter', то стоит узнать о' collections.defaultdict', чтобы избежать необходимости писать, если заявления, как тот, который вы написали в более общих заявлений. Также 'dict.setdefault'. –

ответ

0

Вы очень много там. Для вас просто нет причин для повторения всех отсортированных словарей.

sorted_count = sorted(count, key=count.get, reverse=True) 
print sorted_count[0] 
print sorted_count[-1] 

В качестве альтернативы:

print min(count, key=count.get) 
print max(count, key=count.get) 
+0

Это только возвращает алфавит, я имею в виду E, D, а не их значения, такие как E: 10, D: 1 –

+0

Это тривиально, чтобы исправить. У вас есть словарь, вы можете получить доступ к значениям по ключевым словам. Поэтому 'count [sorted_count [0]]' даст вам счет. Вы также можете использовать 'sorted (count.items(), key = lambda item: item [0], reverse = True)' –

4

Вы можете использовать collections.Counter для подсчета букв:

>>> import operator, collections 
>>> counter = collections.Counter('AAAABBBBBCCDEEEEEEEEEEFFF') 
Counter({'E': 10, 'B': 5, 'A': 4, 'F': 3, 'C': 2, 'D': 1}) 

>>> sorted_counter = sorted(counter, key=operator.itemgetter(1), reverse=True) 
[('E', 10), ('B', 5), ('A', 4), ('F', 3), ('C', 2), ('D', 1)] 

>>> print sorted_counter[-1] 
('D', 1) 

>>> print sorted_counter[0] 
('E', 10) 
+0

Не нужно сортировать: 'min' и' max' имеют параметры 'key'. –

+0

без использования коллекций и операторов. –

Смежные вопросы