2012-04-23 2 views
1
import re 
sums = dict() 
fh= open('wordcount.txt','r') 
for line in fh: 
    words = [word.lower() for word in re.findall(r'\b\w+\b', line)] 
    for word in (words): 
     if word in sums: 
      sums[word] += 1 
     else: 
      sums[word] = 1 
print sums 
fh.close 

результат показатьPython: как печатать dict в отдельной строке?

{'and': 1, 'heart': 1, 'love': 2, 'is': 1, 'pass': 1, 'rest': 1, 'wounded': 1, 'at': 3, 
'in': 3, 'lie': 1, 'winchelsea': 1, 'there': 1, 'easy': 1, 'you': 2, 'body': 1, 'be': 
1, 'rise': 1, 'shall': 4, 'may': 2, 'sussex': 1, 'montparnasse': 1, 'not': 3, 'knee': 
1, 'bury': 3, 'tongue': 1, 'champmedy': 1, 'i': 5, 'quiet': 1, 'air': 2, 'fresh': 1, 
'the': 1, 'grass': 1, 'my': 3} 

код для печати все слова и частоты слов использовать.

Я хотел бы распечатать dict в отдельной строке.

'and': 1 
'heart': 1 
'love': 2 
... 

Любой возможный способ сделать это?

ответ

15
>>> from pprint import pprint 
>>> pprint(sums) 
{'air': 2, 
'and': 1, 
'at': 3, 
'be': 1, 
'body': 1, 
....., # and so on... 
'you': 2} 
+0

спасибо. Работайте как можно раньше :) – ThanaDaray

+0

приветствуется: D – jamylak

+1

+1, я помню, что это спросило IRL и увидев, что кто-то говорит, что человек просит его преобразовать в JSON и распечатать его, что вызвало у меня физическую боль. –

2

Вы можете использовать iteritems для перебора ключей и значений, и, таким образом, иметь возможность форматирования вывода, как вы хотите. Предполагая, что строки в качестве ключей и Интс как значения:

for k, v in d.iteritems(): 
    print '%s: %d' % (k, v) 
1
>>>for x in sums: 
    print(repr(x),":",dic[x]) 


'and' : 1 
'heart' : 1 
'sussex' : 1 
'rise' : 1 
'love' : 2 
'be' : 1 
'may' : 2 
'the' : 1 
'is' : 1 
'in' : 3 
'body' : 1 
'rest' : 1 
'at' : 3 
'pass' : 1 
'not' : 3 
'knee' : 1 
'air' : 2 
'bury' : 3 
'tongue' : 1 
'lie' : 1 
'winchelsea' : 1 
'i' : 5 
'there' : 1 
'grass' : 1 
'quiet' : 1 
'shall' : 4 
'montparnasse' : 1 
'fresh' : 1 
'easy' : 1 
'wounded' : 1 
'you' : 2 
'champmedy' : 1 
'my' : 3 
0

Другой сложный путь с помощью лямбда-

f = lambda *x: null; 
f(*(print(x,":",y) for x,y in mydict.iteritems())) 

Выход

key2 : 2 
key1 : 1 
Смежные вопросы