← Все вопросы

Как оставить только общие ключи двух словарей (пересечение)?

Задан 11 месяцев назад489 просмотров3 ответа
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].

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект