Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 向字典中的列表添加多个元素_Python_List_Dictionary - Fatal编程技术网

Python 向字典中的列表添加多个元素

Python 向字典中的列表添加多个元素,python,list,dictionary,Python,List,Dictionary,因此,我使用此方法从文本文件设置参数: def set_params(self, params, previous_response=None): if len(params) > 0: param_value_list = params.split('&') self.params = { param_value.split()[0]: json.loads(previous_resp

因此,我使用此方法从文本文件设置参数:

def set_params(self, params, previous_response=None):
        if len(params) > 0:
            param_value_list = params.split('&')
            self.params = {
                param_value.split()[0]: json.loads(previous_response.decode())[param_value.split()[1]] if
                param_value.split()[0] == 'o' and previous_response else param_value.split()[1]
                for param_value in param_value_list
            }
例如,当我调用此方法时,如下所示:

apiRequest.set_params("lim 5 & status active")

//now self.params={"lim" : 5, "status" : "active"}
它工作得很好。现在,我希望能够多次添加相同的参数,当这种情况发生时,将参数设置为列表:

apiRequest.set_params("lim 5 & status active & status = other")

//I want this: self.params={"lim" : 5, "status" : ["active", "other"]}

我怎样才能完美地修改这个方法?我能想到的只是有点难看。。。我是python新手

只要把它写得尽可能简单明了就行了。这通常是最好的方法。在下面的代码中,我对您的需求做了一个更改:所有值都是一个列表,有些值可能只有列表中的一个元素

在该方法中,我应用了以下选择和技术:

  • 仅解码和解析前一个响应一次,而不是每次引用它
  • 从一本空字典开始
  • 只拆分每个字符串一次:这会更快,因为它避免了冗余操作和内存分配,而且(更重要的是)更容易读取,因为代码不重复
  • 根据特殊情况调整
  • 用于获取当前值列表(如果存在),或设置新的空列表对象(如果不存在)
  • 将新值附加到值列表中
def set_参数(self、params、previous_response=None):

如果len(params)堆栈溢出可能不是解决此类问题的最佳位置。也许你可以改为发帖?从一个常规循环开始,过度复杂的理解表达式很少是美丽的。可读性。。。例如
参数值.split()
,它会运行4次。为什么不先用
split
进行预处理呢?@KarolyHorvath谢谢,但你建议使用哪种预处理?你能发布一些代码吗?
map(str.split,…)
   — Brian W. Kernighan and P. J. Plauger in The Elements of Programming Style.