Документация относительно сжатия / методы распаковки

Это прекрасная возможность использовать yield, чтобы превратить вашу функцию в генератор. Генератор может выдавать целую кучу элементов и вести себя как список или другой итеративный элемент. Вызывающий цикл перебирает свое возвращаемое значение и получает по одному полученному элементу каждую итерацию, пока не вернется функция.

def get_keys(input_dict):
    for key, value in input_dict.items():
        if isinstance(value, dict):
            for subkey in get_keys(value):
                yield key + '/' + subkey
        else:
            yield key

for key in get_keys(my_dict):
    print(key)

Внутри внешнего цикла for каждое значение является либо dict, либо простым значением. Если это простая величина, просто дайте ключ. Если это диктат, повторите его и добавьте key + '/' к каждому подразделу.

1111 Приятно, что вам не нужно поддерживать какое-либо состояние. path_list и current_path ушли. get_keys() просто возвращает строки одну за другой, а операторы yield и рекурсивный цикл заставляют выпрямление клавиш естественным образом вытряхиваться.

stream1/dataset1/value1
dataset2/value1
dataset2/value2
stream2/dataset3/value4
stream3/value5
5
задан nzpcmad 27 February 2009 в 00:28
поделиться

4 ответа

Хорошая книга по этой теме является Книгой Сжатия данных. Это начинается с основами и заканчивается с JPEG и фрактальными алгоритмами сжатия изображения.

Я работал через эту целую книгу несколько лет назад (первый выпуск, я думаю), и я все еще помню это как действительно полезный опыт.

5
ответ дан 14 December 2019 в 04:48
поделиться

Я нахожу, что Википедия является довольно хорошим источником в этом отношении. Посмотрите, например, Кодирование методом Хаффмана, LZW и Выкачайте для некоторых общих алгоритмов сжатия данных общего назначения без потерь.

Если Вы хотите сделать что-то более определенное, статья о JPEG также действительно хороша.

2
ответ дан 14 December 2019 в 04:48
поделиться

Эта конкуренция дает хорошую идею текущего уровня техники для текстового сжатия и чего-то, чтобы стремиться при предложении чего-то хорошего!

Я нашел это полезным обзором сжатия изображения без потерь.

Если Вы только для чтения одна научная работа на предмете, сделайте это C.E. Шеннон "Математическая Теория Коммуникации". Идеи там абсолютно фундаментальны для сжатия.

2
ответ дан 14 December 2019 в 04:48
поделиться

Это - полностью не ответ, но.... Сжатие и Распаковка, для меня, действительно никогда не имели высокого процента. В Системе существуют классы сжатия. IO.Compression и те вещи заботятся о нем для меня. Что больше я должен знать? Если встроенные классы не достаточны, существует сторонний класс, освобождает.

(На самом деле классы DeflateStream и GZipStream в.NET показывают аномальное поведение с ранее сжатыми данными: они могут на самом деле увеличить размер данных, которые их просят сжать.Ой! Об этом сообщили как проблема, но выстрел был отклонен прочь щита Borg: Подключение.

Благодарность Microsoft для требования общедоступных отчетов об ошибках; Bados на Microsoft для просто Заключительных ошибок они не испытывали желание фиксировать.)

-1
ответ дан 14 December 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: