【问题标题】:increment loop the value associate with a key of a dictionary, whithout create a new incremented key递增循环与字典的键关联的值,而不创建新的递增键
【发布时间】:2020-09-22 16:37:48
【问题描述】:

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

代码:

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。如我所愿。 如何循环执行?

【问题讨论】:

  • 你能有一个完整列表和withthisResult的例子吗
  • 不清楚是什么错误。请参阅如何创建最小的、可重现的示例:stackoverflow.com/help/minimal-reproducible-example
  • 我在这个网站上得到了一个团队的结果列表:link 使用这个函数match_results = driver.find_elements(By.CSS_SELECTOR, ".wld") 包含的完整列表是例如 [D, V, D, V, V, V, V, V ] 和 withthisResult = 列表中的一个值。
  • 请提供预期的minimal, reproducible example。显示中间结果与您的预期不同的地方。我们应该能够复制和粘贴您的代码的连续块,执行该文件,并重现您的问题以及问题点的跟踪输出。
  • 我已经修改了代码,现在清晰多了

标签: python dictionary for-loop


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢,但这不是一个普遍的问题。我编辑了我的问题,我希望它会更容易理解。抱歉,如果在我不知道问题出在哪里之前不清楚的话
【解决方案2】:

我设法用这段代码解决了我的问题:

List_elem = ["D", "V", "D", "D", "D", "V", "D", "V", "V", "V", "V","D","V","V"]
elem_of_list = "D"
valeur = 0
dic_list = {1: valeur}

for numberResult in range(0, len(List_elem)):
       if elem_of_list != List_elem[numberResult]:
         dic_list[len(dic_list)] = valeur = valeur + 1
       elif elem_of_list == List_elem[numberResult] and elem_of_list != List_elem[numberResult-1] and numberResult-1 > - 1:
         dic_list[len(dic_list)+1] = valeur = 0 

我刚刚使用键 = 1 和值关联 = 0 初始化了字典 dic_list。 我认为因为就像键不存在一样,len(dic_list) 返回 0 但是当我增加键的值关联 = 0 所以创建一个新键并且len(dic_list) 等于 1,依此类推,这会创建一个增量每一回合的钥匙和钥匙的创造。 如果有人可以确认并更好地解释它是否不是很清楚并且我的解释是好的或者相反是正确的。我想听听你的意见。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 2020-04-28
    • 2017-07-18
    • 1970-01-01
    • 2018-12-02
    • 2011-04-06
    相关资源
    最近更新 更多