【问题标题】:Adding the results of a for loop to the same key in a nested dictionary将 for 循环的结果添加到嵌套字典中的相同键
【发布时间】:2019-03-01 09:47:20
【问题描述】:

我有一本字典,其中包含一些子字典。每个子字典都有很多键。在运行带有 if 条件的 for 循环之后,将生成结果。我想将所有结果添加到所需的键下;但我的代码实际上所做的只是添加循环最后一次迭代的结果,从而替换上一次迭代的值。

但是,实际上,我想打印所有结果。

for item in list1:          #item is a tuple & list1 has tuples in it
   if item == node_pair:        #node pair is another tuple
        high_p[i]["links"] = link_name           #"links" is the key 

期望的输出: "links": [link_name1, link_name2, link_name3]
我得到了什么:

"links" : link_name3

请指导我..

【问题讨论】:

    标签: python-3.x dictionary nested tuples key


    【解决方案1】:

    所以每个子词典都需要有列表作为值。您可以提前使用列表预先填充每个子词典,但使用 setdefault 按需创建它们更容易。

    for item in list1:
       if item == node_pair:
            high_p[i].setdefault("links", []).append(link_name)
    

    【讨论】:

    • 非常感谢。但为什么它附加到相反的顺序?它首先附加link_name3,然后附加link_name2,最后附加link_name1?并且还附加多个link_name3、link_name2和link_name1
    • 这些值应该按照它们添加到列表中的顺序出现。如果 link_name3 首先出现,则意味着它首先被添加到列表中。我没有关于您的实际程序的足够信息来解释为什么 link_name3 在其他程序之前被迭代。也许如果我有一个minimal reproducible example...
    猜你喜欢
    • 1970-01-01
    • 2021-04-12
    • 2022-12-13
    • 2021-08-04
    • 1970-01-01
    • 2021-11-23
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多