Не удается получить словарь для цикла для извлечения строк из правильных столбцов

1

Я пытаюсь создать словарь из двух столбцов в файле Excel. Мой код выглядит следующим образом:

import openpyxl
from openpyxl import load_workbook

wb = load_workbook('country_data.xlsx')

sheet = wb["List of countries"]

for i in range(1, 198):
    list1 = list(sheet.cell(row=i, column=1).value)
    list2 = list(sheet.cell(row=i, column=3).value)

dictionary = dict(zip(list1,list2))

print(dictionary)

Я исправил исходную ошибку (забыл, что мне не нужно было начинать мои столбцы с нуля), но теперь, когда я печатаю словарь или списки, кажется, что каждый из них потянул случайные значения. Я пытаюсь извлечь значения из столбца 1 и столбца 3 моего файла excel.

Мои столбцы выглядят так:

Col1      Col3
ger       Germany
eng       England
fra       France
spa       Spain
etc       etc

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

{'z': 'a', 'w': 'f', 'e': 'r'}

Как я могу исправить эту ошибку? Я пытаюсь сделать column1 ключевым для моего словаря и столбца 3 моего значения.

  • 2
    Вы передали column=0 одному из вызовов. Если это подсчет 1, то должен быть column=1 ?
  • 0
    Я изменил значение столбца на 1 (забыл, что мне не нужно начинать с 0 на этот раз), и теперь код выводит значения, но не из нужных столбцов, и только 3 значения вместо 198 значений, которые находятся в каждый из двух столбцов я хотел бы добавить в свой словарь. (Столбец 1 = ключ, а Столбец 3 = значение). Как я могу это исправить?
Теги:
for-loop
dictionary

2 ответа

0
Лучший ответ

Похоже, вы используете column=0, однако, поскольку он считается от 1, то не существует. Попробуйте это вместо этого:

list1 = list(sheet.cell(row=i, column=1).value)
list2 = list(sheet.cell(row=i, column=3).value)
0

Решила мою проблему! Мне пришлось создавать временные переменные, которые равнялись ячейкам листа, которые я искал в моем цикле for. После выполнения каждой из этих строк я добавил эту переменную temp в свой список. По завершении цикла for я закрепил свой словарь, напечатал его, и все было там.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню