← Все вопросы
Как оставить только общие ключи двух словарей (пересечение)?
13
Есть два словаря, нужны только те ключи, что есть в обоих. И в идеале сразу собрать новый словарь по этим ключам из первого.
a = {"x": 1, "y": 2, "z": 3}
b = {"y": 9, "z": 8, "w": 7}
# общие ключи: y, z
3 ответа
22
✓ Принятый ответ — помог автору
d.keys() ведёт себя как множество, поэтому пересечение делается оператором &:
common = a.keys() & b.keys() # {'y', 'z'}
result = {k: a[k] for k in common} # {'y': 1... берём из a}
Аналогично работают | (объединение ключей), - (разность) и ^ (симметричная разность). Брать значения можно из любого словаря — выбираешь сам, из какого a[k] или b[k].
Антон Михайлов Не знал, что keys() поддерживает операции множеств напрямую, удобно · 11 месяцев назад
7
a.keys() & b.keys() даёт множество общих ключей.
4
Можно и так: [k for k in a if k in b].
Ваш ответ
Войдите, чтобы ответить на вопрос.