通过遍历列表、dict和常量创建字符串

2024-09-30 22:14:45 发布

您现在位置:Python中文网/ 问答频道 /正文

初学者问题在这里。我相信有一种更像Python的方式来做这件事。基本上,我需要使用列表和dict的内容创建一个字符串,另外还需要插入常量。我试图通过Eval为函数调用生成最终产品。我目前的代码可以正常工作,但闻起来有80年代的基本味道(这让我老了)。我已经看过了。加入,拉链和包裹,但没有运气

列表(argumentlist)包含参数名称(如打开、关闭、长度),dict(self.indicator\u参数)包含所有可能的参数名称及其默认值。例如,在dict中有一个键“length”及其默认值。此外,我需要连接“+”和逗号,以创建结束字符串

下面是迄今为止的代码示例

    def loop_thru_arguement_list_to_create_end_string(self, argument, resultant_argument_string):
        if resultant_argument_string == "":
            resultant_argument_string = argument + ' = ' + str(self.indicator_paremeters.get(
            argument))
        else:
            resultant_argument_string = resultant_argument_string + ", " + argument + ' = ' + str(
            self.indicator_paremeters.get(
                argument))
        return resultant_argument_string

从此处的循环调用此函数(需要重命名该函数):

    def extract_argument_list_from_function(self, fullarguments) -> str:
        resultant_argument_string = ""
        argumentlist = fullarguments[0]
        for argument in argumentlist:
            resultant_argument_string = self.loop_thru_arguement_list_to_create_end_string(argument,
                                                                                       resultant_argument_string)
        return resultant_argument_string

fullarguments=是inspect.getfullargspec调用的dict。我只需要args,因此需要[0]

以上所有方法都属于更广泛的类别

self.indicator\u parameters是保存所有潜在参数的dict

上面的代码工作正常,但感觉不太对劲特别是IF语句,它不会让人觉得像Python。


Tags: 字符串代码self名称列表参数stringargument
1条回答
网友
1楼 · 发布于 2024-09-30 22:14:45

在我看来,你只需要这个:

def extract_argument_list_from_function(self, fullarguments: List) -> str:
    res = ''
    for arg in fullarguments[0]:
        param = self.indicator_paremeters.get(arg)
        res = f'{res}, {arg} = {param}' if res else f'{arg} = {param}'
    
    return res

您可以删除loop_thru_arguement_list_to_create_end_string方法

相关问题 更多 >