我目前正在用 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_count
、blocked_count
、untested_count
和failed_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]
中获取值。你明白为什么吗?