2017-05-07 64 views
0

我試圖讓我的程序的輸出:Python以字母開頭,結合兩個for循環?

a. am {1: '2'} 
b. at {1: '2'} 
c. far {1: '1'} 
... 
ff. glad {1: '2'} 
gg. i {1: '2'} 
hh. it {1: '1'} 
... 
ooo. lets {1: '0'} 
ppp. outcome {1: '2'} 

第一部分,字母,是行號而是一個字母表示,循環回字母表開始,當它到達「Z。 「

第二部分中的詞是它從字符串中掃描出的按字母順序排列的詞。

第三部分是{單詞出現的次數:出現在句子中的句號}。

出於某種原因,除了我無法讓枚舉循環在刻字上正常工作以外,一切正常。目前,它輸出這樣的:

a. am {1: '2'} 
a. at {1: '2'} 
a. far {1: '1'} 
a. glad {1: '2'} 

我的代碼是:

import string 
from itertools import cycle 
x=range(1) 

... 

letters = list(string.ascii_lowercase) 
m = len(letters) 
for key in sorted(word_counter): 
    order = {len(word_counter[key]): str(sent_num[key]).replace('[','').replace(']','')} 
     #creates a dictionary with the number of times word appears on the left 
     #and the sentence it appears in on the right 
    for i, (let, e) in enumerate(zip(cycle(letters), x)): 
     testing = (let*(i//m+1)) 
     print("{}. {} {}".format(testing, key, order)) 

如果我改變了「X =範圍(1)」到別的它只是重複以前的線很多次,然後移動到下一個詞。誰能幫我?

+0

什麼是'word_counter'?一個整數? –

+0

word_counter和sent_num是詞典 – Ember

回答

1

你不需要內部循環,zipcycle對象與主列表,並讓計數從那裏上:

... 
for i, (let, key) in enumerate(zip(cycle(letters), sorted(word_counter))): 
    order = {len(word_counter[key]): str(sent_num[key]).replace('[','').replace(']','')} 
    testing = let*(i//m+1) 
    print("{}. {} {}".format(testing, key, order)) 
+0

非常感謝!作品:)無法弄清楚如何將它們結合起來 – Ember