Необходимо написать функцию, которая принимает открытый файл как единственный параметр и возвращает словарь, который отображает строку в список строк и целых чисел.открытие текстового файла и построение словаря
Каждая строка в тексте будет иметь имя пользователя, имя, фамилию, возраст, пол и адрес электронной почты. Функция будет вставлять информацию каждого человека в словарь со своим именем пользователя в качестве ключа, а значение - список [фамилия, имя, адрес электронной почты, возраст, пол].
в основном то, что им пытаются сделать, это открыть текстовый файл, который содержит следующее:
ajones Alice Jones 44 F [email protected]
и вернуть что-то вроде этого:
{ajones: ['Jones', 'Alice', '[email protected]', 44, 'F']}
до сих пор я сделал это, но есть ли другой более простой способ?
def create_dict(file_name):
'''(io.TextIOWrapper) -> dict of {str: [str, str, str, int, str]}
'''
newdict = {}
list2 = []
for line in file_name:
while line:
list1 = line.split() #for a key, create a list of values
if list2(0):
value += list1(1)
if list2(1):
value += list1(2)
if list2(2):
value += list1(3)
if list2(3):
value += list1(4)
newdict[list1(0)] = list2
for next_line in file_name:
list1 = line.split()
newdict[list1(0)] = list1
return newdict
def helper_func(fieldname):
'''(str) -> int
Returns the index of the field in the value list in the dictionary
>>> helper_func(age)
3
'''
if fieldname is "lastname":
return 0
elif fieldname is "firstname":
return 1
elif fieldname is "email":
return 2
elif fieldname is "age":
return 3
elif fieldname is "gender":
return 4
Ваш код не верный, вы используете '()' вместо '[]' on 'list1' для индексирования. И оператор 'is' используется для проверки личности, а не равенства. –
также значение не определено здесь, поэтому оно вызывает ошибку на 'value + = ...' –
, это может быть лучше подходит для http://codereview.stackexchange.com/ – dm03514