Python как объединить в словари вместе с диапазоном?

#python #python-3.x #dictionary

Вопрос:

У меня есть список ценностей

 list = ["apple","red","oranges","orange","grapes","purple"]
 

и список столбцов:

 columns = ["fruit","color"]
 

Я хотел бы создать объединенный словарь вместе, чтобы он выглядел так

 ["fruit": "apple", "colour": "red"]
["fruit": "oranges", "colour": "orange"]
["fruit": "grapes", "colour": "purple"]

empty_item = dict([(i, None) for i in columns])
item = empty_item
for x in range(item):
 

У меня есть следующий приведенный выше код, но я не могу понять остальное

Редактировать —

Спасибо за приведенные ниже решения, они сработали, но я хочу разделить свои объединенные словари на все отдельные строки, так что

 ["fruit": "apple", "colour": "red"] -- (separate line, line 1)
["fruit": "oranges", "colour": "orange"] -- (separate line, line 2)
["fruit": "grapes", "colour": "purple"] -- (separate line, line 3)
 

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

1. это неправильный синтаксис словаря, также не называйте список «списком».

Ответ №1:

Вы можете использовать понимание словаря в понимании списка, например:

 l = ["apple","red","oranges","orange","grapes","purple"]
columns = ["fruit","color"]
colLen = len(columns)
res = [{columns[j]: l[i * colLen   j] for j in range(colLen)} 
          for i in range(len(l) // colLen)]
print(res)
# [{'fruit': 'apple', 'color': 'red'}, {'fruit': 'oranges', 'color': 'orange'}, {'fruit': 'grapes', 'color': 'purple'}]
 

Demo

Ответ №2:

Желаемый результат — неправильный синтаксис. Я предполагаю, что вам нужен список словарей в этом формате. Приведенный ниже код сделает свое дело.

 lst = ["apple","red","oranges","orange","grapes","purple"]
columns = ["fruit","color"]
lstDicts = [{columns[0]:fruit,columns[1]:color} for fruit, color in zip(*[iter(lst)]*2)]
 

код перебирает lst два элемента за раз, присваивая первому элементу fruit , а второму color -. Также мы можем реализовать понимание списка для создания списка словарей.
выход

 [{'fruit': 'apple', 'color': 'red'}, 
{'fruit': 'oranges', 'color': 'orange'},
 {'fruit': 'grapes', 'color': 'purple'}]
 

Ответ №3:

Гораздо лучшее решение, которое заставит вас плакать от радости:

 values = ["apple","red","oranges","orange","grapes","purple"]
columns = ["fruit","color"]

print([{key: value for key, value in zip(columns, pair)} 
        for pair in zip(values[:-1:2], values[1::2])])