2017-02-01 62 views
1

只是不能得到这个工作。任何帮助,高度赞赏。将值附加到for循环中的字典

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

这是印像这样

{ 'K1': 'V1']}和{ 'K1': 'V2']}

我有其他几个嵌套for循环下来这个代码,这将使用此字典和字典只有最新的键值对,即{'k1':'v2'}

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

请提出一个解决方案,而无需使用setdefault

回答

2

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) 

sorted(d.items()) 
[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])] 

d = defaultdict(list)线设置键的值是默认的空字典和值追加到列表循环。

0

您也可以在分配前检查关键的存在。

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