2016-12-12 13 views
0

私はいくつかの辞書を含む1つのリストを持っています。共通鍵を結合して辞書の値を結合する方法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 '、' 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を使用して同等の技術より 単純かつ迅速である

関連する問題