如何 return 不在列表中的键?
How to return keys which are not in a list?
我有以下命令:
d = {'Z':1,'A':2,'C':3}
我想return所有不在['A','B']
中的键
我知道 [k for k in d.keys() if 'A' not in k]
有效,但 [k for k in d.keys() if ['A','B'] not in k]
无效,因为 not in
需要字符串而不是列表。
不需要迭代,可以使用集差操作
>>> d = {'Z':1,'A':2,'C':3}
>>> l = ['A','B']
>>> set(d) - set(l)
{'Z', 'C'}
这取决于您的要求:
# Check for exact key match
d = {'Z':1,'A':2,'C':3}
[k for k in d.keys() if k not in ['A', 'B']]
# Substring match
d = {'Z':1,'A':2,'C':3}
[k for k in d.keys() if not any(s in k for s in ['A', 'B'])]
我有以下命令:
d = {'Z':1,'A':2,'C':3}
我想return所有不在['A','B']
我知道 [k for k in d.keys() if 'A' not in k]
有效,但 [k for k in d.keys() if ['A','B'] not in k]
无效,因为 not in
需要字符串而不是列表。
不需要迭代,可以使用集差操作
>>> d = {'Z':1,'A':2,'C':3}
>>> l = ['A','B']
>>> set(d) - set(l)
{'Z', 'C'}
这取决于您的要求:
# Check for exact key match
d = {'Z':1,'A':2,'C':3}
[k for k in d.keys() if k not in ['A', 'B']]
# Substring match
d = {'Z':1,'A':2,'C':3}
[k for k in d.keys() if not any(s in k for s in ['A', 'B'])]