在 for 循环中将值附加到字典

Kri*_*nya 8 python

只是不能得到这个工作。任何帮助都受到高度赞赏。

dict = {}
for n in n1:
    if # condition #
        dict[key] = []
        dict[key].append(value)
        print dict
Run Code Online (Sandbox Code Playgroud)

这是打印这样的东西

{'k1':['v1']} 和 {'k1':['v2']}

我有几个其他嵌套的 for 循环这个代码,它将使用这个 dict 并且 dict 只有最新的键值对,即 {'k1':'v2'}

我正在寻找类似的东西 {'k1':['v1','v2']}

请提出一个不使用的解决方案 setdefault

Bac*_*ics 6

collections.defaultdict一试:

#example below is in the docs.
from collections import defaultdict

s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d = defaultdict(list)
for k, v in s:
    d[k].append(v)

print(sorted(d.items()))
[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
Run Code Online (Sandbox Code Playgroud)

d = defaultdict(list)行默认将键值设置为空字典,并将值附加到循环中的列表中。


gzc*_*gzc 5

您还可以在分配之前检查密钥是否存在。

dict = {}
for n in n1:
    if # condition #
        if key not in dict:
            dict[key] = []
        dict[key].append(value)
        print dict
Run Code Online (Sandbox Code Playgroud)