Как вернуть ключи, которых нет в списке? - PullRequest
2 голосов
/ 12 января 2020

У меня следующий дикт:

d = {'Z':1,'A':2,'C':3}

Я хочу вернуть все ключи, которых нет в ['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 ожидает строку, а не список.

Ответы [ 2 ]

9 голосов
/ 12 января 2020

Нет необходимости повторять, вы можете использовать операцию установки разности.

>>> d = {'Z':1,'A':2,'C':3}
>>> l = ['A','B']
>>> set(d) - set(l)
{'Z', 'C'}
1 голос
/ 12 января 2020

Зависит от того, что вы просите:

# 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'])]
...