为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蓝山帝景 2022-07-19 20:40:21
我有一本字典: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可能有更多项目。
查看完整描述

2 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

您可以从您的字典中过滤每个列表:


bad_items = pcps_in_negative |  pcps_at_zero

new_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']}


查看完整回答
反对 回复 2022-07-19
?
九州编程

TA贡献1785条经验 获得超4个赞

尝试这个 :


import copy

for 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']}


查看完整回答
反对 回复 2022-07-19
  • 2 回答
  • 0 关注
  • 75 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信