如果条件为真,则将项添加到字典中,否则不要 - python

时间:2014-05-28 15:19:44

标签: python dictionary conditional

我正在尝试采用现有流程:

if self.path_object is not None:
    dictpath = {}
    for path in self.path_object:
        self.params = path.pathval.split("?")[0]
        self.params = path.pathval.split("&", 2)
        if any(item in path.pathval for item in self.params):
            out = list(map(lambda v: v.split("=")[0] +"=" + str(self.fuzz_vectors), self.params))
            dictpath[path] = out
    print dictpath

更新对于那些寻找使用split()方法寻求帮助的人。我发现使用urlparse库更容易。感谢用户DarinDouglass指出这一点。

由于

1 个答案:

答案 0 :(得分:1)

这是因为无论如何,您都要将path分配给dictpath。赋值将运行for循环的每次迭代。

要解决此问题,您可以将pass更改为continue或将dictpath[path] = out移至if语句的true块中。后者是更好的选择,因为您可以删除else语句。


编辑:你的if语句中发生了另一个问题。让我们分解吧。你的条件说的是:

  • self.params中是否有可以在path.pathval中找到的任何项目。

问题在于,这始终是True,因为self.paramspath.pathval的子集;也就是说,您从self.params 创建 path.pathval

这是一个显示我的意思的例子:

pathval = 'www.example.com/some_path/?param1=1&param2=2'

# params = ['www.example.com/some_path/?param1=1', 'param2=2']
params = pathval.split('&', 2)

# Essentially says: is the string 'www.example.com/some_path...' in pathval? YES
if any(item in pathval for item in params)
    # Add to dict

修复代码后,请随时将其发布到Code Review,因为我有一些更适用的语句。