gpt4 book ai didi

python - 使用字典值时的字符串格式问题

转载 作者:太空宇宙 更新时间:2023-11-03 15:09:46 24 4
gpt4 key购买 nike

在使用字典值尝试创建字符串时,我遇到了一个奇怪的问题。基本上,我有一个函数可以打开文件,读取一行,并将在该行中找到的值存储在字典中。然后,它将这些值发送到外部程序。这是代码:

def createLandscapes(file):

landscapeParameters = {'FILE': "NULL",
'N': "NULL",
'K': "NULL",
'NUM': "100"}

for line in file:
if line == "END LANDSCAPES\n":
break
else:
parameters = line.replace(" ", '').split(",")

for parameter in parameters:
parameter = parameter.split("=")
if parameter[0] not in landscapeParameters:
malformedFile()
landscapeParameters[parameter[0]] = parameter[1]

for key in landscapeParameters:
if landscapeParameters[key] == "NULL":
malformedFile()

# This print statment is for diagnostic purposes
print("./generateScoreTables {} {} {} {}".format(landscapeParameters['FILE'],
landscapeParameters['N'],
landscapeParameters['K'],
landscapeParameters['NUM']))

os.system("./generateScoreTables {} {} {} {}".format(landscapeParameters['FILE'],
landscapeParameters['N'],
landscapeParameters['K'],
landscapeParameters['NUM']))

为了让这一点变得非常清楚,该函数在单个逗号分隔行上查找一系列参数输入,其形式为

FILE=example, N=20, K=5, NUM=100

它接受这些输入并覆盖landscapeParameters中的默认输入(如果指定),并使用landscapeParameters中的值来调用外部程序。

奇怪的是,当我使用landscapeParameters中的默认参数时,字符串格式似乎无法正常工作。我的意思是,如果函数读取以下行:

FILE=example, N=20, K=5, NUM=100

一切正常,打印语句打印:

./generateScoreTables example 20 5 100

但是,如果函数读取以下行:

FILE=example, N=20, K=5

在我保留 NUM 来使用默认参数的地方,我得到以下输出:

./generateScoreTables testland1 15
0 100
Segmentation fault
sh: 2: 0: not found

格式似乎未正确格式化该字符串,但我不明白为什么。有人对此有任何见解吗?

最佳答案

这个问题已经向您指出了,但我仍然无法发表评论,所以我将把它分开。这将涉及稍微修改您的代码。

一旦到达此阶段:

parameters = ['FILE=example', 'N=20', 'K=5', 'NUM=100']

# make a list of tuples with [(FILE, default), ('N', 20)...]
pars = [x.split("=") for x in parameters]

现在将每个双数转换为字典 dict_of_pars 中的键值对

dict_of_pars = {k: v for k, v in pars}
#dictionary with values for a single line
# {'FILE': 'example', 'N': '20', 'K': '5', 'NUM': '100'}

此时,您将拥有一个字典,其中包含任何特定行的所有已定义参数。如果您创建一个保存默认值的函数(输出),您可以在调用中使用 **dict_of_pars 发送一行的可用参数

# define output function with default parameters
def output(FILE='example, N='n', K='k', NUM='num'):
os.system(FILE, N, K, NUM)

现在您可以使用

调用该函数
  output(**dict_of_pars)  #will unpack the arguments into output function

为文件中的每一行创建一个临时字典,并将其传递到输出。希望这会有所帮助。

关于python - 使用字典值时的字符串格式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44317079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com