Python — Объединить два словаря в единый список (по ключам)

#python

#python

Вопрос:

У меня есть:

 market = {
       "APPL" : 2.33 },
        "IBM" : 3.44 },
        "AMZN" : 5.33 }
}

portfolio = {
        "APPL" : 0.20,
        "IBM" : 0.05
}
  

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

 index 0:  Multiplication of 2.33 and 0.20
index 1:  Multiplication of 3.44 and 0.05
  

Есть идеи?

Ответ №1:

Вы могли бы использовать понимание списка:

 market = {
       "APPL" : 2.33,
        "IBM" : 3.44,
        "AMZN" : 5.33 }

portfolio = {
        "APPL" : 0.20,
        "IBM" : 0.05
}

out = [value * market[key] for key, value in portfolio.items()]
print(out)

# [0.466, 0.17200000000000001]
  

Обратите внимание, однако, что dicts упорядочены только начиная с Python 3.6, поэтому порядок значений в списке гарантированно соответствует порядку элементов в portfolio dict только с этими версиями.

Ответ №2:

Вы могли бы перебирать элементы портфолио следующим образом:

 [value * market[key] for key, value in portfolio.items()]
  

или, если вы хотели сохранить ключи:

 {key: value * market[key] for key, value in portfolio.items()}
  

Редактировать: я пропустил, что вы хотели список, а не dict

Ответ №3:

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

 [market[k] * v for k, v in portfolio.items()]