Нахождение совпадения между двумя ключами словаря и создание нового словаря из обоих значений dict

#python #python-3.x #dictionary

#python #python-3.x #словарь

Вопрос:

У меня есть два словаря следующим образом:

 a = {XX: 1000, YY: 2000}
b = {XX: 'foo', YY: 'bar'}
 

и я хотел бы сопоставить ключи a и b вывести словарь в виде:

 c = {'foo': 1000, 'bar': 2000}
 

Я знаю, что могу создать набор, используя только совпадающие ключи:

 set(a.keys()) amp; set(b.keys())
 

но это не сохраняет нужные мне отношения данных вместе. Я чувствую, что я слишком усложняю то, что можно сделать простым питоническим способом.

Ответ №1:

Один из способов использования пересечения dict.keys :

 {b[k]: a[k] for k in a.keys() amp; b.keys()}
 

Вывод:

 {'foo': 1000, 'bar': 2000}
 

Комментарии:

1. Это именно то, что мне было нужно, поскольку ключи могут не совпадать в обоих a , b и порядок не выровнен, спасибо.

Ответ №2:

Вы можете использовать zip:

 a = {"XX": 1000, "YY": 2000}
b = {"XX": 'foo', "YY": 'bar'}

print(dict(zip(b.values(), a.values())))
 

Вон:

 {'foo': 1000, 'bar': 2000}
 

Комментарии:

1. Это полностью зависит от порядка dict, который может быть рискованным. b = {"YY": 'bar', "XX": 'foo'} даст неверный вывод