2016-12-12 82 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()

比等效技術更快
相關問題