【问题标题】:Check if dict gets consecutive incremental counters检查 dict 是否获得连续的增量计数器
【发布时间】:2021-09-27 03:50:50
【问题描述】:

我构造了以下字典,它从for-loop 开始获取计数器。 for-loop 做了这样的事情:

for period in range(number_periods):

  if value > mean_value: 

    dict[key] += 1 ​

由此,我得到以下字典:

dict = {(1, 1): 0, (2, 2): 0, (3, 3): 3}

现在我想弄清楚字典中的一个键是否进入了一个计数器,例如for-loop(即k=3)的三个连续句点,我想分别识别这些键并将它们存储在一个新字典中。

因此,如果发生以下情况,我想创建一个新字典或打印计数器连续增加的特定键。

period = 1: dict = {(1, 1): 0, (2, 2): 0, (3, 3): 0}
period = 2: dict = {(1, 1): 0, (2, 2): 0, (3, 3): 1}
period = 3: dict = {(1, 1): 0, (2, 2): 0, (3, 3): 2}
period = 4: dict = {(1, 1): 0, (2, 2): 0, (3, 3): 3}

new_dict = {(3, 3): 1}

也就是说,new_dict 表示发生此连续增量的键(对于给定的示例,如果 k=3 仅发生一次。

new_dict 本身应具有计数功能,即每当 dict 中的计数器连续增加 3 次时,new_dict 中的计数器应增加 1。如果再次发生这种情况,new_dict应该再次调整:

new_dict = {(3, 3): 2}

实现这一目标的最有效方法是什么?

【问题讨论】:

  • 您还想在new_dict 中看到哪些其他可能的值?您展示了一个带有单个键和一个值的示例:1
  • 也许最好实现另一个计数功能,即每当new_dict 中的计数器增加时(即三个周期内dict 中的计数器增加1),然后再次计数器在 new_dict 中应该增加 1 并且对于所有键。
  • 你的意思是new_dict中的值应该是dict中的值(顺便说一句请换个名字)除以3吗?
  • new_dict 应该简单地计算在dict 中发生三个连续计数器的实例(例如,如果 (3,3) 在周期 1、2 和 3 中获得计数器,那么new_dict 应该算作1)。请原谅不好的命名。

标签: python dictionary for-loop key counter


【解决方案1】:

您可能希望这种情况发生的一种方法是检查您何时增加 dict 中的值:

for period in range(number_periods):
    if value > mean_value: 
        dict[key] += 1 ​
        v = dict[key]
        v3 = v//3
        if v3 > 0:
            new_dict[key] = v3

【讨论】:

  • 非常感谢 - 这正是我想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-20
  • 2013-08-02
  • 2019-06-10
  • 1970-01-01
  • 1970-01-01
  • 2022-06-15
  • 1970-01-01
相关资源
最近更新 更多