如何在python字典中组合公共键和连接值

2024-04-19 00:25:52 发布

您现在位置: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 to work'在一个键下:'TEXT242.txt',这样我就可以删除重复的键。你知道吗

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

Tags: toreporttxtgo字典单子workstudy
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])
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']})

This technique is simpler and faster than an equivalent technique using dict.setdefault()

相关问题 更多 >