Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 17, 2023 21:46:45

Alduin
Зарегистрирован: 2023-01-10
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Разработайте функцию get_cats_info(path)

У нас есть следующая структура файла:

60b90c1c13067a15887e1ae1,Tayson,3
60b90c2413067a15887e1ae2,Vika,1
60b90c2e13067a15887e1ae3,Барсик,2
60b90c3b13067a15887e1ae4,Simon,12
60b90c4613067a15887e1ae5,Tessi,5
Каждая запись состоит из трех частей и начинается с новой строчки. Например, для первой записи начало 60b90c1c13067a15887e1ae1 – это первичный ключ базы данных MongoDB. Он всегда содержит 12 байтов или ровно 24 символа. Далее мы видим прозвище кота Tayson и его возраст 3. Все части записи разделены символом запятая ,

Разработайте функцию get_cats_info(path), которая будет возвращать список словарей с данными кошек в виде:

[
{“id”: “60b90c1c13067a15887e1ae1”, “name”: “Tayson”, “age”: “3”},
{“id”: “60b90c2413067a15887e1ae2”, “name”: “Vika”, “age”: “1”},
{“id”: “60b90c2e13067a15887e1ae3”, “name”: “Barsik”, “age”: “2”},
{“id”: “60b90c3b13067a15887e1ae4”, “name”: “Simon”, “age”: “12”},
{“id”: “60b90c4613067a15887e1ae5”, “name”: “Tessi”, “age”: “5”},
]
Параметры функции:

path – путь к файлу
Требования:

прочтите содержимое файла с помощью режима “r”.
мы используем менеджер контекста with
верните из функции список кошек из файла в нужном формате

  def get_cats_info(path):
    dct={}
    res = []
    with open(path, 'r') as fh:
        for i in fh.read().split():
            j = i.split(",")
            dct.update({"id": j[0], "name": j[1], "age": j[2]})
            res.append(dct)
    return res



Функция get_cats_info работает неверно и возвращает: Необходимо вернуть список:
 [{'id': '60b90c2e13067a15887e1ae3', 'name': 'Barsik', 'age': '2'}, {'id': '60b90c2e13067a15887e1ae3', 's':' 2'}, {'id': '60b90c2e13067a15887e1ae3', 'name': 'Barsik', 'age': '2'}] Необходимо вернуть список: [{'id': '60b90c1c13067a15887e ', 'age': '3'}, {'id': '60b90c2413067a15887e1ae2', 'name': 'Vika', 'age': '1'}, {'id': '60b90c2e13067a15887ea 'Barsik', 'age': '2'}]

Ггде ошибка?? Что изменить??

Офлайн

#2 Янв. 17, 2023 21:54:23

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1349
Репутация: +  118  -
Профиль   Отправить e-mail  

Разработайте функцию get_cats_info(path)

  
def get_cats_info_2(path):
    res = []
    with open(path, 'r') as fh:
        for i in fh.read().split():
            j = i.split(",")
            dct={"id": j[0], "name": j[1], "age": j[2]}
            res.append(dct)
    return res


Функция get_cats_info работает неверно и возвращает:
так посмотри что возвращается, увидишь что там в списке словари из последней строчки,
потому что в список добавляется один и тот же словарь, только методом update() он после каждой итерации меняется.

Отредактировано xam1816 (Янв. 17, 2023 22:01:19)

Офлайн

#3 Янв. 17, 2023 22:13:22

Alduin
Зарегистрирован: 2023-01-10
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Разработайте функцию get_cats_info(path)

Интересно.То есть я каждый раз создавал один и тот же словари и он его обновлял перезаписывая из-за функции update().Ну понял эту ошибку.Спасибо!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version