【问题标题】:Random choice from two match list [Python]从两个匹配列表中随机选择 [Python]
【发布时间】:2019-03-15 05:58:33
【问题描述】:

我无法从我的代码中执行此场景。我必须在 .ini 文件中列出。

[FMI]
vendorCodes=["a", "b", "c", "d", "e"]
supplierName=["Test 1", "Test 2", "Test 3", "Test 4", "Test 5" ]

我使用 json.loads 从.ini 文件中调用列表。

vendorCodes = json.loads(config.get('Section1','vendorCodes'))
supplierName = json.loads(config.get('Section1','supplierName'))4

从列表中,random.choice 将执行以挑选数据。

vendorCodes, supplierName = random.choice(vendorCodes), random.choice(supplierName)

我还有一个函数可以将它写入.csv 文件中。

fmiwriter.writerow([poNumber] + [vendorCodes] + [supplierName])

问题是输出不正确。它应该与列表匹配,如果 vendorCodes 中的随机选择是 a,那么 supplierName 应该是 Test 1

下面是错误的输出:

588636,a,Test 3
332790,c,Test 2
810055,d,Test 4
655819,a,Test 3
159163,e,Test 1

预期的输出应该是这样的:

588636,a,Test 1
332790,c,Test 3
810055,d,Test 4
655819,a,Test 1
159163,e,Test 5

【问题讨论】:

    标签: python json list scripting devops


    【解决方案1】:

    不要使用choice。选择一个整数索引,并使用该索引访问两个列表。

    import random
    index = random.randrange(len(vendorCodes))
    chosenVendorCode = vendorCodes[index]
    chosenSupplierName = supplierName[index]
    

    【讨论】:

    • 我明白了。使用索引要好得多。
    【解决方案2】:

    您可以在zip 的两个列表中为random.choice 挑选一对:

    chosenVendorCode, chosenSupplierName = random.choice(zip(vendorCodes, supplierName))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-31
      相关资源
      最近更新 更多