一个请求有多个参数,都可传空,有个别参数有枚举值,请问如何拿到参数的所有不重复组合?注:只能用python3的本地库
import itertools
params = {
'param1': [1, 2], # 枚举值为1和2
'param2': ['a', 'b', 'c'], # 任意字符串
'param3': [True, False] # 布尔值
}
combinations = list(itertools.product(*params.values()))
for combination in combinations:
payload = dict(zip(params.keys(), combination))
print(payload)
{'param1': 1, 'param2': 'a', 'param3': True}
{'param1': 1, 'param2': 'a', 'param3': False}
{'param1': 1, 'param2': 'b', 'param3': True}
{'param1': 1, 'param2': 'b', 'param3': False}
{'param1': 1, 'param2': 'c', 'param3': True}
{'param1': 1, 'param2': 'c', 'param3': False}
{'param1': 2, 'param2': 'a', 'param3': True}
{'param1': 2, 'param2': 'a', 'param3': False}
{'param1': 2, 'param2': 'b', 'param3': True}
{'param1': 2, 'param2': 'b', 'param3': False}
{'param1': 2, 'param2': 'c', 'param3': True}
{'param1': 2, 'param2': 'c', 'param3': False}
之前逆向的时候接触过 希望能帮到你
这个就是多重循环,每个循环包括参数的所有允许值
循环的嵌套就是所有的排列组合了
【以下回答由 GPT 生成】
我将使用Python的itertools
库来生成所有不重复的参数组合。我将介绍一个示例代码,该代码可以根据您的实际需求进行修改。
首先,安装itertools
库,如果您已经安装了Python 3,那么itertools
库应该已经自带了。如果没有安装,可以通过以下命令安装:
pip install itertools
然后,将以下代码保存为一个Python文件(例如http_param_combinations.py
):
import itertools
def generate_param_combinations(parameters):
"""
生成参数的所有组合
参数:
parameters (dict): 请求的所有参数,其中值可能为None或是枚举列表
返回:
list: 所有参数的不重复组合
"""
param_combinations = []
for param_name, param_values in parameters.items():
if param_values is None:
param_combinations.append([(param_name, None)])
else:
param_combinations.append([(param_name, value) for value in param_values])
return list(itertools.product(*param_combinations))
# 测试代码
parameters = {
'param1': ['value1', 'value2'], # 预定义枚举值
'param2': ['value3', 'value4', None], # 有可能为None
'param3': [None] # 可能为空
}
combinations = generate_param_combinations(parameters)
print(combinations)
运行以上代码,将会输出所有不重复的参数组合。
请将您的请求参数以字典的形式传递给generate_param_combinations()
函数,并使用合适的键值对代表每个参数的名称和可取的值。在测试代码中,我使用parameters
字典来代表一个HTTP请求的参数。
注意,如果字典的值为None,表示该参数可能为空。如果值为预定义的枚举列表,则表示该参数只能取列表中的值。
代码将返回一个列表,其中包含所有不重复的参数组合。每个组合都是一个元组,其中包含每个参数的名称和值。
【相关推荐】