Возвращает значения из одного словаря путем сравнения ключей из другого словаря

#python #python-3.x #dictionary

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

Вопрос:

У меня есть два словаря, и я хочу получить значения первого словаря для ключей второго. Оба словаря имеют одинаковые ключи, но в разном порядке. Например:

 dict1={'a':1,'b':1,'c':0,'d':0,'e':1,'f':0,'g':1}
  

Это первый словарь. И второй словарь:

 dict2={'c':3,'b':2,'a':1,'d':1,'e':0,'g':0,'f':0}
  

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

 dict3={'c':0,'b':1,'a':1,'d':0,'e':1,'g':1,'f':0}
  

Есть ли какой-нибудь способ сделать это?

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

1. Зачем вам сортировать dict?

Ответ №1:

Если у вас есть Python 3.7 , вы можете использовать это:

 dict1={'a':1,'b':1,'c':0,'d':0,'e':1,'f':0,'g':1}
dict2={'c':3,'b':2,'a':1,'d':1,'e':0,'g':0,'f':0}

dict3 = {k: dict1[k] for k in dict2.keys()}
print(dict3)

> {'c': 0, 'b': 1, 'a': 1, 'd': 0, 'e': 1, 'g': 1, 'f': 0}
  

Что нового в Python 3.7

характер сохранения порядка вставки объектов dict был объявлен официальной частью спецификации языка Python.

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

1. Спасибо. Это работает отлично. Я искал это.

Ответ №2:

Это то, что вы имели в виду?

 dict3 = {key:dict1[key] for key in dict2.keys()}
  

Пробовал на python 3.9.

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

1. Спасибо. Да, это именно то, что я имел в виду.