为什么没有从字典列表值中删除项目

我有一本字典:


new_members = {'member1': ['PCP2'],

 'member10': ['PCP2'],

 'member13': ['PCP5'],

 'member2': ['PCP1', 'PCP2'],

 'member5': ['PCP5'],

 'member6': ['PCP1', 'PCP5'],

 'member7': ['PCP2', 'PCP4'],

 'member8': ['PCP5'],

 'member9': ['PCP1', 'PCP5']}

和 2 套:


pcps_in_negative = {'PCP4'}

pcps_at_zero = {'PCP6'}

如果任一集合中的项目出现在任何字典的列表值中,请将其删除。所以在这种情况下,应该从“member7”列表中删除“PCP4”。


我试过了


for k, v in new_members.items():

    for i in v:

        if i in pcps_at_zero or i in pcps_in_negative:

            v.remove(i)

但new_members项目保持不变。“member7”应该只有 ['PCP2']。这是一个简单的例子。pcps_in_negative在另一种情况下,这些集合pcp_at_zero可能有更多项目。


蓝山帝景
浏览 79回答 2
2回答

婷婷同学_

您可以从您的字典中过滤每个列表:bad_items = pcps_in_negative |  pcps_at_zeronew_members = {k: [e for e in v if e not in bad_items] for k, v in new_members.items()}print(new_members)输出:{'member1': ['PCP2'], 'member10': ['PCP2'], 'member13': ['PCP5'], 'member2': ['PCP1', 'PCP2'], 'member5': ['PCP5'], 'member6': ['PCP1', 'PCP5'], 'member7': ['PCP2'], 'member8': ['PCP5'], 'member9': ['PCP1', 'PCP5']}

九州编程

尝试这个 :import copyfor k, v in new_members.items():    temp_list = copy.deepcopy(v)    temp_list = [x for x in temp_list if x not in pcps_at_zero]    temp_list = [x for x in temp_list if x not in pcps_in_negative]    new_members[k] = temp_list最终的 new_members 字典变为:{'member1': ['PCP2'],'member10': ['PCP2'],'member13': ['PCP5'],'member2': ['PCP1', 'PCP2'],'member5': ['PCP5'],'member6': ['PCP1', 'PCP5'],'member7': ['PCP2'],'member8': ['PCP5'],'member9': ['PCP1', 'PCP5']}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python