#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'}
даст неверный вывод