如果条件为true,则向字典中添加项,否则不要使用python

如果条件为true,则向字典中添加项,否则不要使用python,python,dictionary,conditional,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

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

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()
方法寻求帮助的用户。我发现用图书馆做这件事比较容易。感谢用户DarinDouglass指出这一点


谢谢

这是因为您正在将
路径
分配给
dictpath
。分配将运行for循环的每个迭代

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


编辑:if语句中出现了另一个问题。让我们把它分解一下。你的条件是:

  • self.params
    中是否有任何项目可以在
    path.pathval
    中找到
问题是这总是
True
,因为
self.params
path.pathval
的子集;也就是说,您可以从
path.pathval
创建
self.params

下面是一个例子来说明我的意思:

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


一旦您的代码被修复,请随时将其发布到,因为我这里有一些更适用的语句。

请查看更新的代码。这仍然包含像www.somesite.com/path/path/path和somesite.com这样的路径?id=6¶m2=blah,但它应该只包含带参数的URL。它有什么问题吗?对不起,我没看见。如果这里有任何提示,我将不胜感激。谢谢。我知道self.params是从path.pathval派生的。我怎样才能使它只依赖于self.params?如果我理解正确,它说如果path.pathval中有对象,则拆分并添加到dictLet-us。