【发布时间】:2025-11-22 17:50:02
【问题描述】:
我有两本词典:
members_singles = {'member3': ['PCP3'], 'member4': ['PCP1'], 'member11': ['PCP2'], 'member12':
['PCP3'], 'member14': ['PCP4'], 'member15': ['PCP4'], 'member16': ['PCP4'], 'members17': ['PCP3']}
providers = {
"PCP1" : 3,
"PCP2" : 4,
"PCP3" : 1,
"PCP4" : 2,
"PCP5" : 4,
}
我想遍历members 并且每次出现特定值时,从providers 中的匹配计数倒数一个
to_remove_zero = []
pcps_in_negative = []
for member, provider_list in members_singles.items():
provider = provider_list[0]
if provider in providers:
providers[provider] -= 1
if providers[provider] == 0:
to_remove_zero.append(provider)
elif providers[provider] < 0:
pcps_in_negative.append(provider)
else:
pass
我想将那些最终计数为零的提供者保存到一个列表中,并将那些负数的提供者保存到另一个列表中。但我的结果显示 to_remove_zero 包含 ['PCP3', 'PCP4'] 即使它们应该是负面的。所以循环在它们到达第二个条件之前将它们弹出。像这样的python简单计数器在倒计时时会停在零还是我错过了什么?
【问题讨论】:
-
在第一个 sn-p 你提到“members_singles”。第二个是“members_with_one_choice”。它们有关系吗?
-
是的,很抱歉,实际上有相同的,但我忘了在我的问题中将它们更改为相同
-
@Greg 给出了正确答案:如果提供者达到 0,它将从“提供者”中删除,并且不能进一步递减。
-
@MichaelButscher 我已经编辑了我的原始问题并删除了“pop”命令。它仍然不会低于零并做我想做的事
标签: python dictionary counter