只是不能让这个工作。任何帮助都非常感谢。
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
建议解决方案
#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)
行默认将键值设置为空字典,并将值附加到循环中的列表中。
代码的问题是每次for循环运行时都会为'key'创建一个空列表。您只需要对代码进行一次改进:
dict = {}
dict[key] = []
for n in n1:
if # condition #
dict[key].append(value)
print dict
您也可以在分配前检查密钥是否存在。
dict = {}
for n in n1:
if # condition #
if key not in dict:
dict[key] = []
dict[key].append(value)
print dict