#python
#python
Вопрос:
Я беру пользовательский ввод «компонентов», разбивая его на список и сравнивая эти компоненты со списком доступных компонентов, сгенерированных из столбца A таблицы Google. Затем то, что я пытаюсь сделать, это вернуть значение ячейки из столбца G, соответствующего индексу столбца A. Затем повторите это для всех входных значений.
Пока я получаю первое значение просто отлично, но мне, очевидно, чего-то не хватает, чтобы вернуть его обратно и к оставшимся компонентам пользовательского ввода. Я попробовал кое-что, используя itertools, но не смог получить желаемые результаты. У меня такое чувство, что я столкнусь с проблемой, когда найду решение этой проблемы здесь или самостоятельно.
mix = select.split(',') # sets user input to string and sparates elements
ws = s.worksheet("Details") # opens table in google sheet
c_list = ws.col_values(1) # sets column A to a list
modifier = [""] * len(mix) # sets size of list based on user input
list = str(c_list).lower()
for i in range(len(mix)):
if str(mix[i]).lower() in str(c_list).lower():
for j in range(len(c_list)):
if str(mix[i]).lower() == str(c_list[j]).lower():
modifier[i] = ws.cell(j 1,7).value # get value of cell from Column G corresponding to Column A for component name
print(mix)
print(modifier)
Ответ №1:
Вы чрезмерно усложняете код, написав C
подобный код. Я изменил все циклы, которые у вас были, на более простой одиночный цикл, я также оставил комментарии над каждой строкой кода, чтобы объяснить, что он делает.
# Here we use .lower() to lower case all the values in select
# before splitting them and adding them to the list "mix"
mix = select.lower().split(",")
ws = s.worksheet("Details")
# Here we used a list comprehension to create a list of the "column A"
# values but all in lower case
c_list = [cell.lower() for cell in ws.col_values(1)]
modifier = [""] * len(mix)
# Here we loop through every item in mix, but also keep a count of iterations
# we have made, which we will use later to add the "column G" element to the
# corresponding location in the list "modifier"
for i, value in enumerate(mix):
# Here we check if the value exists in the c_list
if value in c_list:
# If we find the value in the c_list, we get the index of the value in c_list
index = c_list.index(value)
# Here we add the value of column G that has an index of "index 1" to
# the modifier list at the same location of the value in list "mix"
modifier[i] = ws.cell(index 1, 7).value
Комментарии:
1. Да, я понемногу учусь. Это выглядит намного более чистым. Однако я получаю тот же результат, когда отображаю строку модификатора, когда я использовал 3 значения, которые я использую в качестве тестового ввода. Актуально, когда я печатаю строку модификатора
['4', '', '']
, что я должен получать['4', '3', '2']
2. Неважно, я разобрался с проблемой. Это было первое место в следующих двух записях.