迭代非插值符号数组 python 等效



我目前正在用 python 从 ruby 模块编写脚本。我在将 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_countblocked_countuntested_countfailed_count的实际值,但在多个字典中。这应该迭代它们并将所有值相加并将它们放入一个metric_hash中保存的符号(即passed_count

现在,当我尝试翻译成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()谢谢

在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]中获取值。你明白为什么吗?

最新更新