2017-09-25 27 views
0

我有一個腳本,通過計算文件中的模式,並在文件的計數結果之前編寫文件名(基本名稱)和標題(安靜的大代碼,我假設這個問題並不重要)。python;寫字典和額外的參數到txt文件

print(basename, header, counts) 

計數的輸出是模式和值。

我的輸出是這樣的:

filename1 header1 {'pattern1': 1, 'pattern2': 2} 
filename1 header2 {'pattern3': 2, 'pattern4': 1} 
filename2 header1 {'pattern5': 3, 'pattern6': 1} 

我想寫的模式,並且計數到一個txt文件,包括每個詞典鍵和值的文件名和標題,用空格隔開,像這樣

filename1 header1 pattern1 1 
    filename1 header1 pattern2 2 
    filename1 header2 pattern3 2 
    filename1 header2 pattern4 1 
    filename2 header1 pattern5 3 
    filename2 header1 pattern6 1 

但我不知道如何做到這一點。有人可以幫我用命令來寫這樣的輸出嗎?

+1

請嘗試一下並回來一個特定的任務離子。最好就你自己的代碼的每一步提出一個單獨的具體問題,而不是隻拋出一堆需求並關閉。 –

+0

請花時間閱讀[問]。 – wwii

+0

'pattern1'和'pattern2'的順序是否重要? – cdarke

回答

0

你可以這樣做:

for item in counts: 
    print(basename, header, item, counts[item]) 

而且,你可以這樣做,在一個行,但它是一個有點棘手;)

print(basename, header, '\n%s %s '.join([(" ".join([str(lst),str(counts[lst])])) for lst in counts]) %(basename, header)) 
+0

是的,這是有效的。非常感謝! – Gravel

0

在你有print(basename, pattern, counts)的循環內,只需在字典上添加另一個循環即可。

for loop...: # not sure what it looks like 
    for k, v in counts.items(): 
     print(basename, pattern, k, v) 

counts.items()python3,使用counts.iteritems()python2

+0

'.items()'也適用於Python版本2.x。 – wwii

+0

是真的,雖然它返回一份副本,您可能不希望僅用於打印 – thaavik