如何组合公共密钥并加入字典python中的值

时间:2016-12-12 04:00:32

标签: python dictionary

我有一个包含一些词典的列表。

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

如果字典具有相同的键,如何组合它。例如: 你工作了,你去工作了一把钥匙:' TEXT242.txt',这样我就可以删除重复的密钥。

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

2 个答案:

答案 0 :(得分: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])

答案 1 :(得分: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()

的等效技术