如果匹配列表中的两个元素,我怎么做?

2024-05-15 23:42:31 发布

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

我正在通过这4本词典,它们由不同类型的测试用例组成。你知道吗

 1. Manual-Smoke         ==> d1
 2. Manual- Regression   ==> d2 
 3. Automated-Smoke      ==> d3
 4. Automated-Regression ==> d4

现在我将一个包含4个字典的列表传递给一个函数 让我数数。我的问题是计算所有“手动”案例的数量; “自动化”案例

我有一张单子,上面写着input_list =[d1,d2,d3,d4]。现在,我要执行6个场景:

 1. d1 && d2
 2. d3 && d4
 3. d1
 4. d2
 5. d3
 6. d4

因此,如果出现上述任何一种情况,那么我将采取措施。因此,我使用的代码涵盖了4个场景,但从未涵盖前两个场景

for d in dict:
  if d ==d1 and d==d2:
    print 'Scenario:1 ==> d1 && d2'
  elif d==d3 and d==d4:
    print 'Scenario:2 ==> d3 && d4'
  else:
    if d==d1:
      print 'Scnario 3: ==> d1'
    elif d==d2:
      print 'Scnario 4: ==> d2'
    elif d==d3:
      print 'Scnario 5: ==> d3'
    elif d==d4:
      print 'Scnario 6: ==> d4'

我知道我的循环从不陷入Scenario 1&;Scenario 2条件,因为我的列表不包括(d1,d2) (d3,d4)。你知道吗

你们能帮我改进代码吗?你知道吗


Tags: 列表场景manualsmoke案例d2d1d3
3条回答

我们正在迭代list类型的数据结构。所以给变量起个有意义的名字。我给了input_list =["d1", "d2", "d3", "d4"]

当我们迭代listinput_list变量时,列表中的一项将被迭代。所以我们不能做if d ==d1 and d==d2:,因为我们在比较一个项目和两个不同的条件,这两个条件总是错误的。你知道吗

我从你的代码中了解到,我们有一个列表,根据一些硬代码条件,我们必须执行一些场景。你知道吗

演示:

input_list =["d1", "d2", "d3", "d4"]



if "d1" in input_list and "d2" in input_list:
  print 'Scenario:1 ==> d1 && d2'
elif "d3" in input_list and "d4" in input_list:
  print 'Scenario:2 ==> d3 && d4'
elif "d1" in input_list:
  print 'Scnario 3: ==> d1'
elif "d2" in input_list:
  print 'Scnario 4: ==> d2'
elif "d3" in input_list:
  print 'Scnario 5: ==> d3'
elif "d4" in input_list:
  print 'Scnario 6: ==> d4'

假设列表包含字典项。你知道吗

演示

d1 = {}
d2 = {}
d3 = {}
d4 = {}

input_list =[d1, d2, d3, d4]


for item in input_list:
    if "d1" in item and "d2" in item:
        print 'Scenario:1 ==> d1 && d2'
    elif "d3" in item and "d4" in item:
        print 'Scenario:2 ==> d3 && d4'
    elif "d1" in item:
        print 'Scnario 3: ==> d1'
    elif "d2" in item:
        print 'Scnario 4: ==> d2'
    elif "d3" in item:
        print 'Scnario 5: ==> d3'
    elif "d4" in item:
        print 'Scnario 6: ==> d4'

备注:

  1. 不要使用Python的保留关键字。dict是Python中的关键字。你知道吗

以下代码

for d in [1, 2, 3, 4]:
  print d

印刷品

1
2
3
4

因此每次通过循环时,变量d只有一个值。它不可能同时是12。你知道吗

但这是你一次测试的警卫。也就是说,你测试d==1 and d==2修改以适合我的例子,这永远不会是事实。你知道吗

既然如此,您的代码如何改进?请看下面的代码

1 in [2, 3]

这将打印

False

我们可以从中了解到in可以确定数组中是否包含元素。因此,不要在数组上循环,而是尝试检查不同的情况。所以你的复合测试看起来像1 in dict and 2 in dict。你知道吗

scenario_map={}   

for d in dict :
    scenario_map[d] = 1 

if scenario_map[d1] == 1 and scenario_map[d2] == 1:
    #execute scenario 1
elif scenario_map[d3] == 1 and scenario_map[d4] == 1 :
    #execute scenario 2 
elif scenario_map[d1] == 1 :
    #execute scenario 3 
elif scenario_map[d2] == 1 :
    #execute scenario 4 
elif scenario_map[d3] == 1 :
    #execute scenario 5 
elif scenario_map[d4] == 1 :
    #execute scenario 6
else :
    #No scenario to execute

相关问题 更多 >