В документации для Image.open
говорится, что он может принимать файл-подобный объект, поэтому вы должны иметь возможность передать объект io.BytesIO
, созданный с объекта bytes
, содержащий закодированный изображение:
from PIL import Image
import io
image_data = ... # byte values of the image
image = Image.open(io.BytesIO(image_data))
image.show()
Для более старых версий Python реальным вопросом должен быть “why нет? ” — незаказанный словарь обычно реализуется как хеш-таблица , где порядок элементов четко определен, но не сразу очевиден (, документация Python раньше указывала это ). Ваши наблюдения соответствуют правилам хеш-таблицы отлично: очевидный произвольный, но постоянный порядок.
Python с тех пор изменил dict
реализация для сохранения порядка вставки, и это , гарантировал с Python 3.7 . Реализация поэтому больше не составляет чистую хеш-таблицу (но хеш-таблица все еще , использовал в ее реализации).
Единственная вещь о словаре, заказывая Вам может полагаться, то, что порядок останется тем же, если не будет никаких модификаций к словарю; например, итерация по словарю дважды, не изменяя его приведет к той же последовательности ключей. Однако, хотя порядок словарей Python детерминирован, это может быть под влиянием факторов, таких как порядок вставок и удалений, таким образом, равные словари могут закончиться с различными упорядочиваниями:
>>> {1: 0, 2: 0}, {2: 0, 1: 0}
({1: 0, 2: 0}, {1: 0, 2: 0})
>>> {1: 0, 9: 0}, {9: 0, 1: 0}
({1: 0, 9: 0}, {9: 0, 1: 0})
спецификация для встроенного типа словаря отрицает любое сохранение порядка, лучше думать о словаре как о незаказанном наборе key: value
пары...
можно хотеть проверить OrderedDict
модуль , который является реализацией заказанного словаря с Ключевым Порядком Вставки.