从列表中未包含的内容构建新词典

2024-09-27 07:22:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要将列表与字典值进行比较,并使用旧字典中不存在的值构建一个新字典

olddict = {'user': ['group1', 'group2'],
        'user2': ['group1']}

RequiredGroups = ['group1', 'group2','group3', 'group4']

newdict= {}
for groups in RequiredGroups:
    for key, value in olddict.items():
        if groups not in value:
            newdict[key] = groups
print(newdict)

电流输出

{'user2': 'group4', 'user': 'group4'}

期望输出

{'user': ['group3', 'group4'],
'user2': ['group2', 'group3', 'group4']}

Tags: keyinfor字典valuegroupsusergroup1
1条回答
网友
1楼 · 发布于 2024-09-27 07:22:48

要修改您的解决方案,请执行以下操作:

而不是:

newdict[key] = groups

使用:

newdict.setdefault(key, []).append(groups)

完整代码:

olddict = {'user': ['group1', 'group2'],
        'user2': ['group1']}

RequiredGroups = ['group1', 'group2','group3', 'group4']

newdict= {}
for groups in RequiredGroups:
    for key, value in olddict.items():
        if groups not in value:
            newdict.setdefault(key, []).append(groups)
print(newdict)

输出:

{'user2': ['group2', 'group3', 'group4'], 'user': ['group3', 'group4']}

较短的解决方案:

不过,使用一行字的词典理解可能会容易得多:

>>> {k: [x for x in RequiredGroups if x not in v] for k, v in olddict.items()}
{'user': ['group3', 'group4'], 'user2': ['group2', 'group3', 'group4']}
>>> 

相关问题 更多 >

    热门问题