python-3.x 如何计算字典关键字的列表在金贾

628mspwn  于 2023-02-26  发布在  Python
关注(0)|答案(1)|浏览(141)

我有dictionaries的列表,我想计算"P"在字典中出现的次数,并将total更新为key,然后给出value计数

{% set my_list = [
  {'key1': "P",'key2': "P",'key3': "P",'key4': "P"},
  {'key1': "P",'key2': "P",'key1': "",'key3': "P",'key4': "P"}, 
  {'key1': "P",'key2': "P",'key3': "",'key4': "P"}
] %}

我的代码是:

{% for my_dict in my_list %}

  {% set count = 0 %}

  {% for key, value in my_dict.items() %}

    {% if value == 'P' %}

      {% set count = count + 1 %}

    {% endif %}

  {% endfor %}

 {% set _ = emp.update({'total': count}) %}  

{% endfor %}

这段代码不是递增计数,而是在所有字典中递增其给定的0,我不知道该如何做
预期输出:

[
 {'key1': 'P', 'key2': 'P', 'key3': 'P', 'key4': 'P', 'total': 4},
 {'key1': '', 'key2': 'P', 'key3': 'P', 'key4': 'P', 'total': 3},  
 {'key1': 'P', 'key2': 'P', 'key3': '', 'key4': 'P', 'total': 3}
]
zkure5ic

zkure5ic1#

简单的{% set %}赋值具有有限的作用域(当前块),您必须使用名称空间对象。

{% set counter = namespace(p=0) %}
{% for my_dict in my_list %}
  {% set counter.p = 0 %}{# Reset counter #}
  {% for key, value in my_dict.items() %}
    {% if value == 'P' %}
      {% set counter.p = counter.p + 1 %}
    {% endif %}
  {% endfor %}
  {% set _ = my_dict.update({'total': counter.p}) %}{# Update dictionary with total #}
{% endfor %}

相关问题