【发布时间】:2020-04-07 09:38:09
【问题描述】:
COMMON_CASES = {'OSX Catalina - Latest Chrome': {'acceptSslCerts': 'true',
'browser': 'Chrome',
'browser_version': '81.0 beta',
'browserstack.debug': 'true',
'browserstack.local': 'true',
'browserstack.networkLogs': 'true',
'os': 'OS X',
'os_version': 'Catalina',
'resolution': '1280x1024'},
'OSX Catalina - Latest Edge': {'acceptSslCerts': 'true',
'browser': 'Edge',
'browser_version': '81.0 beta',
'browserstack.debug': 'true',
'browserstack.local': 'true',
'browserstack.networkLogs': 'true',
'os': 'OS X',
'os_version': 'Catalina',
'resolution': '1280x1024'},
'OSX Catalina Latest Safari': {'acceptSslCerts': 'true',
'browser': 'Safari',
'browser_version': '13',
'browserstack.debug': 'true',
'browserstack.local': 'true',
'browserstack.networkLogs': 'true',
'os': 'OS X',
'os_version': 'Catalina',
'resolution': '1280x1024'}}
LOGIN_SUCCESS = {'Login Success Customer': ('vedran@fishing.vedran', 'vedran123'), 'Login Success Captain': ('vedran@fishing.vedran', 'vedran123'), 'Login Success Admin': ('vedran@fishing.vedran', 'vedran123')}
caps = []
for case_index, (test_name, test_data) in enumerate(LOGIN_SUCCESS.items()):
for test_index, (case_name, device_data) in enumerate(COMMON_CASES.items()):
# case_s = f'{case_name} / {test_name}'
device_data['name'] = test_name
caps.append(test_data + (device_data,))
print(caps)
我有两个变量需要使用两个 for 循环来合并,因为我需要使用两个数组中的键为测试用例建立一个名称。我在两个字典中都有 3 个项目,所以我需要在最终列表中有 9 个项目,这应该是一个元组列表。
现在,当我运行此程序时,我希望列表将包含每个登录案例中的 3 个,登录成功客户、登录成功队长和登录成功管理员 但是,如果您运行我提供的代码,您会看到 dict 中的“名称”始终是 Login Success Admin。那个怎么样?当我在函数内打印代码时,一切都是正确的,但是当我附加到列表时,它会以某种方式发生变化。嵌套循环在 Python 中的工作方式是否不同?
【问题讨论】:
-
请在问题中输入minimal reproducible example。
-
现在可以看到了。
-
这并不是最小的,但是:您的
caps列表包含对同一个字典的多个引用。您从不复制来自COMMON_CASES的字典。
标签: python python-3.x loops nested-loops