2016-12-12 40 views
0

我有一个包含几个字典的列表。如何结合公共密钥并加入字典中的值python

[{u'TEXT242.txt': u'work'},{u'TEXT242.txt': u'go to work'},{u'TEXT1007.txt': u'report'},{u'TEXT797.txt': u'study'}] 

如何结合字典时,它具有相同的密钥。例如: u'work',u'go work'在一个键下:'TEXT242.txt',这样我就可以删除重复的键。

[{u'TEXT242.txt': [u'work', u'go to work']},{u'TEXT1007.txt': u'report'},{u'TEXT797.txt': u'study'}] 

回答

2

字典的setdefault方法是很方便的在这里...它可以创建一个空列表时,辞典键不存在,这样就可以随时追加值。

dictlist = [{u'TEXT242.txt': u'work'},{u'TEXT242.txt': u'go to work'},{u'TEXT1007.txt': u'report'},{u'TEXT797.txt': u'study'}] 
newdict = {} 

for d in dictlist: 
    for k in d: 
     newdict.setdefault(k, []).append(d[k]) 
2
from collections import defaultdict 
before = [{u'TEXT242.txt': u'work'},{u'TEXT242.txt': u'go to work'},{u'TEXT1007.txt': u'report'},{u'TEXT797.txt': u'study'}] 
after = defaultdict(list) 
for i in before: 
    for k, v in i.items(): 
     after[k].append(v) 

出:

defaultdict(list, 
      {'TEXT1007.txt': ['report'], 
      'TEXT242.txt': ['work', 'go to work'], 
      'TEXT797.txt': ['study']}) 

这种技术是简单的,并使用dict.setdefault()

比等效技术更快
相关问题