Python 迭代非插值符号数组

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

我目前正在从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'].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]
是什么吗?