Python 迭代非插值符号数组
我目前正在从ruby模块用python编写脚本。我在ruby到python的翻译方面遇到了问题 Ruby:Python 迭代非插值符号数组,python,ruby,Python,Ruby,我目前正在从ruby模块用python编写脚本。我在ruby到python的翻译方面遇到了问题 Ruby: plan_metrics[test_name]={ passed_count: 0, blocked_count: 0, untested_count: 0, failed_count: 0, reviewed_count: 0, test_harness_issue_count: 0, bug_failure_count: 0, defect_list: [] } entry['runs
plan_metrics[test_name]={ passed_count: 0, blocked_count: 0, untested_count: 0, failed_count: 0, reviewed_count: 0, test_harness_issue_count: 0, bug_failure_count: 0, defect_list: [] }
entry['runs'].each do |run|
metric_hash = plan_metrics[test_name]
%i[passed_count blocked_count untested_count failed_count].each do |key|
metric_hash[key] = metric_hash[key] + run[key.to_s]
end
plan_metrics[test_name]={ "passed_count": 0, "blocked_count": 0, "untested_count": 0, "failed_count": 0, "reviewed_count": 0, "test_harness_issue_count": 0, "bug_failure_count": 0, "defect_list": [] }
for run in entry["runs"]:
metric_hash = plan_metrics[test_name]
for key in [metric_hash["passed_count"], metric_hash["blocked_count"], metric_hash["untested_count"], metric_hash["failed_count"]:
metric_hash[key] = metric_hash[key] + run[str(key)]
在此代码中,条目['runs']
保存已通过计数
、已阻止计数
、未测试计数
和未通过计数
的实际值,但保存在多个字典中。这应该是对它们进行迭代,将所有值相加,并将它们放入一个符号(即已通过的\u计数
)中,该符号保存在度量\u哈希
现在,当我尝试将其翻译成python时,我并没有使用符号,而是这样做
我的Python翻译:
plan_metrics[test_name]={ passed_count: 0, blocked_count: 0, untested_count: 0, failed_count: 0, reviewed_count: 0, test_harness_issue_count: 0, bug_failure_count: 0, defect_list: [] }
entry['runs'].each do |run|
metric_hash = plan_metrics[test_name]
%i[passed_count blocked_count untested_count failed_count].each do |key|
metric_hash[key] = metric_hash[key] + run[key.to_s]
end
plan_metrics[test_name]={ "passed_count": 0, "blocked_count": 0, "untested_count": 0, "failed_count": 0, "reviewed_count": 0, "test_harness_issue_count": 0, "bug_failure_count": 0, "defect_list": [] }
for run in entry["runs"]:
metric_hash = plan_metrics[test_name]
for key in [metric_hash["passed_count"], metric_hash["blocked_count"], metric_hash["untested_count"], metric_hash["failed_count"]:
metric_hash[key] = metric_hash[key] + run[str(key)]
但对于这一点,我得到了KeyError:0
在线metric\u hash[key]=metric\u hash[key]+run[str(key)]
会
对于[metric_hash[“passed_count”]、metric_hash[“blocked_count”]、metric_hash[“untested_count”]、metric_hash[“failed_count”]:
相当于
%i[已通过计数阻止计数未测试计数失败计数]。每个do |键|
如果是这样的话,是什么导致了KeyError:0
如果不是,我如何在python中完成ruby示例在符号数组上的交互
如果您需要有关数据的更多信息,请告诉我如何print()
谢谢您在python中所做的
for key in [metric_hash["passed_count"], metric_hash["blocked_count"], metric_hash["untested_count"], metric_hash["failed_count"]:
这意味着键
从列表中获取值[0,0,0,0]
。你明白为什么了吗?在python中是这样的
for key in [metric_hash["passed_count"], metric_hash["blocked_count"], metric_hash["untested_count"], metric_hash["failed_count"]:
这意味着
key
从一个列表中获取值[0,0,0,0]
。你知道为什么吗?是的,这就是我上面提到的,你是在问我为什么会出现key错误:0
?@Mfreeman:我是在问你为什么那行等同于[0,0,0,0]中的
?是的,我确实看到了,但除了它们相等之外,我没有看到你的观点。这是否意味着这不是一个正确的翻译,因为ruby示例正在使用符号?在ruby示例中,它正在更改符号的值(即已通过计数
)但在python示例中,我只是更改了一个与任何内容都无关的数字列表,我的问题是如何在python@Mfreeman:是的,没错,这不是正确的翻译。您没有传递键(如ruby中的键),您正在传递这些键的值。您可以通过传递键修复python代码,与ruby相同。您知道什么是%i[passed\u count blocked\u count]
或%w[passed\u count blocked\u count]
do in ruby,是吗?是的,这就是我上面所说的,你是在问我为什么会有keyerror:0
?@Mfreeman:我是在问你为什么这行代码相当于[0,0,0,0]中的
?是的,我确实看到了,但除了它们相等之外,我没有看到你的观点。这是否意味着这不是一个正确的翻译,因为ruby示例正在使用符号?在ruby示例中,它正在更改符号的值(即已通过计数
)但在python示例中,我只是更改了一个与任何内容都无关的数字列表,我的问题是如何在python@Mfreeman:是的,没错,这不是正确的翻译。您没有传递键(如ruby中的键),您正在传递这些键的值。您可以通过传递键修复python代码,与ruby相同。您知道ruby中的%i[passed\u count blocked\u count]
或%w[passed\u count blocked\u count]
是什么吗?