不能让这个工作。任何帮助都非常感谢。
dict = {}
for n in n1:
if # condition #
dict[key] = []
dict[key].append(value)
print dict
这是打印类似的东西
{' k1':[' v1']}和{' k1':[' v2']}
我在此代码中没有其他几个嵌套for循环,这将使用此dict并且dict只有最新的键值对,即{'k1':'v2'}
我正在寻找像{'k1':['v1','v2']}
请不要使用setdefault
答案 0 :(得分:3)
#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)
sorted(d.items())
[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
默认情况下,d = defaultdict(list)
行将键值设置为空字典,并将值附加到循环中的列表中。
答案 1 :(得分:1)
代码的问题是,每次for循环运行时,它都会为“ key”创建一个空列表。您只需要对代码进行一项改进:
dict = {}
dict[key] = []
for n in n1:
if # condition #
dict[key].append(value)
print dict
答案 2 :(得分:0)
您还可以在分配前检查密钥是否存在。
dict = {}
for n in n1:
if # condition #
if key not in dict:
dict[key] = []
dict[key].append(value)
print dict