#python #excel #list #csv #dictionary
#python #excel #Список #csv #словарь
Вопрос:
Я хочу, чтобы моим конечным результатом был словарь, подобный приведенному ниже.
mydict = {0:'term1', 1:'term2',...'159:'term160'}
У меня есть csv, который содержит один столбец данных, с несколькими словами в каждой ячейке единственной строки столбца.
Пока ни одно из предложений, которые я нашел здесь, не помогло. Ближе всего я подошел к тому, что одна формула создала несколько упорядоченных словарей, которые из моего одного столбца создали словари, подобные приведенным ниже:
{['term1'], ['term2']}
{['term1'], ['term3']}
{['term1'], ['term4']}
Итак, вместо этого я подумал, что просто создам список из столбца. При использовании приведенного ниже кода, вместо того, чтобы получать что-то вроде ['term1', 'term2', 'term3',...'term160']
, я вместо этого получил [['term1'],['term2'],...['term160']]
, который в сочетании с my_list2 = list(range(0, 160))
via my_dict = dict.fromkeys(my_list_numbers, my_list_terms)
распечатал словарь каждого числа в диапазоне, совпадающем со всей [['term1'],['term2'],...['term160']]
import csv
with open('filename.csv') as file:
reader = csv.reader(file)
data = list(reader)
print(data)
Мне просто нужен либо словарь, либо список строк, которые я могу превратить в словарь, чтобы мне не приходилось вводить несколько словарей по 100 пар в каждом. Я гуглил и экспериментировал больше часа. Я относительно новичок в программировании, но я чувствую, что не должно быть так сложно извлечь список строк из excel, csv, word или текстового документа. Или просто отформатируйте это из списка, который я вставляю в ячейку, даже.
Любая помощь будет принята с благодарностью.
Комментарии:
1. Пожалуйста, предоставьте образец данных csv и соответствующие желаемые выходные данные. Спасибо.
2. @Argileon, предполагая, что ваши данные представляют собой один столбец и что вы рассматриваете выходные данные как список, попробуйте следующее
{idx:value[0] for idx, value in enumerate(data)}
Ответ №1:
Предполагая, что данные в файле temp.csv следующим образом:
this_is_r1
this_is_r2
this_is_r3
this_is_r4
Вы можете написать свой код как:
import os
os.chdir("/home/username/Downloads")
res= dict()
with open("temp.csv", "r") as f:
for k,x in enumerate(f):
res[k] = x.replace("n","")
print(res)
Вывод:
{0: 'this_is_r1', 1: 'this_is_r2', 2: 'this_is_r3', 3: 'this_is_r4', 4: 'this_is_r5', 5: 'this_is_r6'}
Как предложил Мигель Трехо, вы также можете использовать понимание словаря как:
with open("temp.csv", "r") as f:
res={k:x.replace("n","") for k,x in enumerate(f)}
print(res)