2017-09-25 59 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