使用列表从字典中删除值

4

我有一个列表

val = ['ed2', 'LL', 'mal', 'DC', 'sp3', 'oo']

一个字典
d = {'A': ['25ed2ish', '5LL45', 'fine', 'LL24'], 'B': ['Q5maDC', 'fern', 'fist', 'Q12malRights']}

我希望跳过包含val中任何值的字符串。例如:25ed2ish'将被跳过,因为它在字符串中间包含ed2fine将保留在最终字典中,因为它不以val中的任何值结尾。我希望我的最终输出为:

d = {'A': ['fine','LL24'], 'B': ['Q5maDC','fern', 'fist']}

我从keep values from dictionary that are not in list这个问题中尝试了以下方法:

result = {}
val = tuple(val)
for key, value in d.items():
    result[key] = [s for s in value if not val]

但是这会导致
{'A': [], 'B': []}

我该如何调整我的代码来实现我想要的输出?


1
你为什么删除了 Q5maDC - Selcuk
1个回答

1

你的代码中没有将值与val进行比较。尝试这样:

result[key] = [s for s in value if not any(v in s and not s.startswith(v) and not s.endswith(v) for v in val)]

这将导致:
{'A': ['fine', 'LL24'], 'B': ['Q5maDC', 'fern', 'fist']}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接