首页 > 解决方案 > 迭代非插值符号数组python等效

问题描述

我目前正在从 ruby​​ 模块用 python 编写脚本。我在将 ruby​​ 翻译成 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

在此代码中,保存、、 和entry['runs']的实际值passed_count,但在多个字典中。这应该遍历它们并将所有值相加并将它们放入保存在blocked_countuntested_countfailed_countpassed_countmetric_hash

现在,当我尝试翻译成 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": [] }
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_hash[key] = metric_hash[key] + run[str(key)]

for key in [metric_hash["passed_count"], metric_hash["blocked_count"], metric_hash["untested_count"], metric_hash["failed_count"]:

是适当的等价物

%i[passed_count blocked_count untested_count failed_count].each do |key|

如果是这样,是什么导致了 KeyError:0?

如果不是,我怎么能完成 ruby​​ 示例所做的事情,在 python 中对符号数组进行交互

如果您需要有关数据的更多信息,请告诉我要print()感谢什么

标签: pythonruby

解决方案


在python中你做

   for key in [metric_hash["passed_count"], metric_hash["blocked_count"], metric_hash["untested_count"], metric_hash["failed_count"]:

这意味着key从 list 中获取值[0, 0, 0, 0]。你明白为什么吗?


推荐阅读