2015-07-13 44 views
0

defaultdict的defaultdict爲了有一個從訪問日誌與Python不同的URL的失敗首先請求數,我不得不用這種方式來創建defaultdict的defaultdict:Iter項目通過關於Python 2.6

apache_status_dict = defaultdict(lambda : defaultdict(int)) 

我算使用apachelog解析器失敗的請求數:

for index, line in enumerate(open(path+aFile)):  
    if int(str(data['%>s'])[0]) == 4 or int(str(data['%>s'])[0]) == 5: 
     apache_status_dict[data['%{Referer}i']][data['%r']] += 1 

我工作的服務器已經安裝了Python 2.6,有沒有辦法來更新它。那麼有什麼辦法可以在我的代碼中做出這樣的事情:

for url in apache_status_dict: 
    for req in url: 
    <code...> 

任何幫助或建議,將不勝感激!

回答

1
for url in apache_status_dict.keys(): 
    for req in apache_status_dict[url]: 
     print apache_status_dict[url][req] 
+0

這正是我所期待的。謝謝 ! – mouuu

1

你總是可以通過defaultdict項目迭代:

d = defaultdict(lambda: defaultdict(int)) 
for i in d.items(): 
    # do something 
+0

好吧,但我怎樣才能d.items的每一個項目(循環)? – mouuu

+0

如果你有像'[('url://foo.com',[err,err,ok]),('url://bar.org',[ok,ok,ok])] ',那麼你應該像解析d.items()'中的URL一樣解壓縮: – Ashot

+0

實際上,我希望每個請求和url都有失敗請求的總數。感謝您的回答PYPL的回答正是我一直在尋找的 – mouuu