Функция zip() в python
product = ['Apple', 'Chips', 'Tea', 'food']
price = [150, 120, 500, 1000]
product_price = zip(product, price)
print(list(product_price))
print(dict(product_price))
# Вывод:
[('Apple', 150), ('Chips', 120), ('Tea', 500), ('food', 1000)]
{}
ПОЧЕМУ ВЫВОДИТСЯ ПУСТОЙ СЛОВАРЬ????
Проблема твоего кода - в том, что функция zip возвращает итератор, а не коллекцию.
Поэтому конструкция list(product_price) потребляет весь итератор, и в нём ничего не остаётся для dict(product_price). Это называется, создатели Питона пытались копировать Хаскель, но не осилили, т.к. вместо нормальных дизайн решений везде срезали углы.
Если тебе нужен список, сохрани его в отдельной переменной и строй словарь из него:
product = ['Apple', 'Chips', 'Tea', 'food']
price = [150, 120, 500, 1000]
product_price = list(zip(product, price))
print(product_price)
print(dict(product_price))
А если не нужен, тогда сразу делай dict от итератора.
Пустой словарь выводится потому, что функция zip() создает итератор кортежей, а не словарь. Чтобы создать словарь, где ключами будут элементы из списка product, а значениями - элементы из списка price, можно использовать функцию dict(), которая принимает итератор кортежей в качестве аргумента.
product = ['Apple', 'Chips', 'Tea', 'food']
price = [150, 120, 500, 1000]
product_price_dict = dict(zip(product, price))
print(product_price_dict)
------
{'Apple': 150, 'Chips': 120, 'Tea': 500, 'food': 1000}