如何使用不同的条目只运行一次程序?

时间:2014-08-01 10:03:32

标签: python

我在论坛中找到了我的问题的答案,但由于我远离专家,因此很难理解其他案例并与我的相比较。对不起,如果这是一个愚蠢的问题。

我在Python中执行一个简单的程序,它读取文件file_i,接收一些输入,并返回结果result_i

我想针对12个案例运行此程序,包含3个不同的文件("file_05""file_10""file_20")以及4个不同的输入(u=7,{{1} },u=8u=9)。但我想一次得到12个结果。

目前,我正在重复代码12次并将所有结果存储在包含u=10result_05_7,...,result_10_7的文件中。但是当然它运行不正常,因为我在代码中做的每一次修改都要做12次......

有人能帮帮我吗?

2 个答案:

答案 0 :(得分:1)

您可以遍历文件和输入,然后将每个结果存储在字典中。

results = {}
files = ["file_05", "file_10", "file_20"]
inputs = [7, 8, 9, 10]
for file in files:
    results[file] = {}
    for input in inputs:
        result = yourfunc(file, input)
        results[file][input] = result

最后,结果字典将包含所有条目:

{'file_05': {7: 18, 8: 19, 9: 14, 10: 7},
 'file_10': {7: 17, 8: 9,  9: 15, 10: 20},
 'file_20': {7: 8,  8: 4,  9: 15, 10: 15}}

答案 1 :(得分:0)

我建议你做以下事情:

  • 阅读itertools
  • 的文档
  • 学习如何定义函数。

这可能会对您有所帮助:

import itertools

files = ["a.txt", "b.txt", "c.txt"]
numbers = [5,2,7,4,3,6,8,3]

def f(file, number):
    print "called f() for file", file, "with additional input", number

for f, n in itertools.product(files, numbers):
    f(f, n)

请确保此示例运行,尝试了解它,然后根据您的需要进行更改。