|
13 / 9 / 4
Регистрация: 24.12.2020
Сообщений: 153
|
|||||||||||
Работа со словарем - ошибка: An item with the same key has already been added. Key10.05.2022, 19:03. Показов 2217. Ответов 16
Метки нет (Все метки)
Здравствуйте, имеется такой код для записи словаря в файл
An item with the same key has already been added. Key Может кто подсказать с чем это связано?
0
|
|||||||||||
| 10.05.2022, 19:03 | |
|
Ответы с готовыми решениями:
16
|
|
Модератор
|
|||||||
| 10.05.2022, 19:29 | |||||||
|
Получите сначала промежуточный массив и проверьте на дублирование первые элементы:
0
|
|||||||
|
13 / 9 / 4
Регистрация: 24.12.2020
Сообщений: 153
|
|
| 10.05.2022, 19:30 [ТС] | |
|
Очень странно
На части тестов работает нормально. На тесте "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." портачит
0
|
|
|
Модератор
|
|||||||
| 10.05.2022, 19:34 | |||||||
|
Leooos, Также советую заменить код создания файла:
0
|
|||||||
|
13 / 9 / 4
Регистрация: 24.12.2020
Сообщений: 153
|
|
| 10.05.2022, 19:37 [ТС] | |
|
Элд Хасп
Какая-то магия происходит. Снова все работает. Причем в конец добавилась только точка и теперь уже и без точки работает Мда, в итоге оказалось, что ошибка идет из-за строки, которая появилась ниже после ctrl+v. То есть ошибка возникает из-за того, что в тестовом файле спускается на следующую строку текст(строка может быть как пустой. так и нет) Это как-то возможно решить? Добавлено через 2 минуты Элд Хасп Нужно словарь, который образуется после работы алгоритма Шеннона-Фано, вывести в отдельный текстовый файл, который можно было бы потом использовать для разархивации созданного архива
0
|
|
|
13 / 9 / 4
Регистрация: 24.12.2020
Сообщений: 153
|
|
| 10.05.2022, 20:01 [ТС] | |
|
Элд Хасп
Поторопился я грешить на кусочек кода с записью и считыванием. Прошел дэбагером на маленьком двустрочном тесте и узрел, что он переход на новую строку в .txt считает равным с пробелом. Однако оказия в том, что он задваивает пробел. Тест qwe asd В моменте перехода на новую строку мы получаем пробел в словарь, а за ним сразу идет ещё один пробел, которого нет. Вот она и беда, вестимо ноги берет из заполнения словаря. Но почему так? Добавлено через 4 минуты Однако я бы добавил, что без записи в файл все работает как надо.
0
|
|
|
13 / 9 / 4
Регистрация: 24.12.2020
Сообщений: 153
|
|
| 10.05.2022, 20:17 [ТС] | |
|
Элд Хасп
Вот именно, что нет Эта ошибка стала появляться только при появлении считывания с файла словаря Добавлено через 1 минуту Элд Хасп Извиняюсь, прочитал неправильно Исключение вываливается, когда нажимается в текстовом файле Enter и появляется новая строка. Он где-то берет второй пробел, хотя их вообще нет(если не считать за пробел переход по строкам)
0
|
|
|
13 / 9 / 4
Регистрация: 24.12.2020
Сообщений: 153
|
|
| 10.05.2022, 20:37 [ТС] | |
|
Элд Хасп
Получается, что да Вестимо, ошибка берет ноги в заполнении этого словаря, причем такая ошибка, что ума не приложу, как избавиться Добавлено через 10 минут в словарь приходит \r и сразу за ним \n, видимо, где-то здесь кроется косяк и ключик, в словарь уходят сразу два пробела
0
|
|
|
Модератор
|
|
| 10.05.2022, 20:48 | |
Сообщение было отмечено Leooos как решение
Решение
Если исходный Codes собирается и сохраняется без исключений, и исключение возникает только при десериализации, то проблема в формате сериализации.
Допустим, если у вас в key попадает \r или \n, то метод ReadLines разделит ключ на две строки.Первая как короткая будет отброшена Where, а вторая с усечённым ключом пойдёт в словарь. Если вам нужны \r\n в ключе или в значении словаря, то вам следует использовать XML или JSON сериализацию, а не свою кастомную в простой текстовый файл.
1
|
|
|
13 / 9 / 4
Регистрация: 24.12.2020
Сообщений: 153
|
|
| 10.05.2022, 21:07 [ТС] | |
|
Элд Хасп, Cпасибо вам огромное.
Переделал, все работает.
0
|
|
|
Модератор
|
||
| 10.05.2022, 21:58 | ||
|
Она создаёт самый оптимальный файл.
0
|
||
|
13 / 9 / 4
Регистрация: 24.12.2020
Сообщений: 153
|
|
| 10.05.2022, 22:51 [ТС] | |
|
Элд Хасп, этот файл будет использоваться сугубо для разархивации архивов, которые получаются посредством алгоритма Шеннона-Фано. Пойду почитаю про бинарную сериализацию, но JSON пока что показал себя очень даже не дурно, хоть просто зип все же лучше архивирует)
0
|
|
|
Модератор
|
||
| 10.05.2022, 23:12 | ||
|
Но проблема больше в том, что на выходе у Zip двоичный файл, а у вас символьный. Попробуйте перейти от обработки символов (char) к обработке байтов. Добавлено через 34 секунды В том числе ключи и значения в словаре должны быть представлены байтами. Добавлено через 21 секунду В том числе ключи и значения в словаре должны быть представлены байтами.
0
|
||
|
13 / 9 / 4
Регистрация: 24.12.2020
Сообщений: 153
|
|
| 10.05.2022, 23:18 [ТС] | |
|
Элд Хасп, хорошо, ещё раз спасибо, пораскину мозгами по поводу вашего совета
0
|
|
| 10.05.2022, 23:18 | |
|
Помогаю со студенческими работами здесь
17
Ошибка при работе с указателем! (key[0]->pr) x006790b8 {size=3 d=2 key=0x0067dcc8 {0xfdfdfdfd {pr=? } Преобразовать многомерный массив [key][key][key] => value Ошибка Generation has thrown an exception: 'bpy_prop_collection[key]: key "ORG-cheek.T.L" not found' при создании рига ошибка: need 'typename' before 'Dictionary<Key, Value>::Node_key' because 'Dictionary<Key, Value #1170 - BLOB/TEXT column 'id' used in key specification without a key length Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|