#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}
характер сохранения порядка вставки объектов dict был объявлен официальной частью спецификации языка Python.
Комментарии:
1. Спасибо. Это работает отлично. Я искал это.
Ответ №2:
Это то, что вы имели в виду?
dict3 = {key:dict1[key] for key in dict2.keys()}
Пробовал на python 3.9.
Комментарии:
1. Спасибо. Да, это именно то, что я имел в виду.