首页 > 解决方案 > 递增循环与字典的键关联的值,而不创建新的递增键

问题描述

我想增加循环与字典键关联的值,而不创建一个新的递增键,如下所示:

代码 :

List_elem = ["D", "V", "D", "D", "D", "V", "D", "V", "V", "V", "V","D","V","V"]
elem_of_list = "D"
dic_list = {}
valeur = 0
for numberResult in range(0, len(List_elem)):
       dic_list[len(dic_list)] = valeur = valeur + 1
       print(dic_list) 

以下是代码执行后的字典:

{0: 1}
{0: 1, 1: 2}
{0: 1, 1: 2, 2: 3}
{0: 1, 1: 2, 2: 3, 3: 4}
{0: 1, 1: 2, 2: 3, 3: 4, 4: 5}
{0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6}
{0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7}
{0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8}
{0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9}
{0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}
{0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10, 10: 11}
{0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10, 10: 11, 11: 12}
{0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10, 10: 11, 11: 12, 12: 13}
{0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10, 10: 11, 11: 12, 12: 13, 13: 14}
>>>

但我希望它把这本词典寄回给我:

{0:14}

不仅是与键关联的值是递增的,这里是与最后一个键关联的值。虽然没有循环,但我可以正常繁殖。例如使用此代码:

dic_list = {1: 3, 2: 6, 3: 9, 4: 12}
valeur = 0
dic_list[len(dic_list)] = valeur = valeur + 1
print(dic_list)

我得到一本这样的字典:

{1: 3, 2: 6, 3: 9, 4: 1}

与最后一个键关联的元素的值已从 12 更改为 1。如我所愿。我怎样才能在一个循环中做到这一点?

标签: pythondictionaryfor-loop

解决方案


我不得不说我没有完全理解整个问题,但是如果我把它作为一个一般问题来寻找与特定值不匹配的最长列表,那么这可能是一个不错的方法:

from itertools import groupby
a = [1,2,3,2,3,4,6,7,2,3,4,2,0,2,2]
ref = 2
m_ans = [len(list(v)) for i,v in groupby(a, lambda x: x!=ref)]
print(max(m_ans))

输出:

4

希望即使这不是您想要的,您也会发现它是一个很好的开始


推荐阅读