簡體   English   中英

python struct解壓縮成dict

[英]python struct unpack into a dict

struct.unpack會將數據解壓縮到元組中。 是否存在將數據存儲到dict中的等價物?

在我的特定問題中,我正在處理固定寬度的二進制格式。 我希望能夠一下子解壓縮並將值存儲在dict中(目前我手動遍歷列表並分配dict值)

如果您使用2.6或更高版本,則可以使用namedtuple + struct.pack / unpack,如下所示:

import collections
import struct

Point = collections.namedtuple("Point", "x y z")

data = Point(x=1, y=2, z=3)

packed_data = struct.pack("hhh", *data)
data = Point(*struct.unpack("hhh", packed_data))

print data.x, data.y, data.z

struct文檔顯示直接解namedtuplenamedtuple 的示例 你可以將它與namedtuple._asdict()結合起來,讓你的一個膨脹:

>>> import struct
>>> from collections import namedtuple
>>> record = 'raymond   \x32\x12\x08\x01\x08'
>>> Student = namedtuple('Student', 'name serialnum school gradelevel')
>>> Student._asdict(Student._make(struct.unpack('<10sHHb', record)))
{'school': 264, 'gradelevel': 8, 'name': 'raymond   ', 'serialnum': 4658}
>>> 

如果重要,請注意在Python 2.7中_asdict()返回一個OrderedDict ...

你想要這樣的東西嗎?

keys = ['x', 'y', 'z']
values = struct.unpack('<III', data)
d = dict(zip(keys, values))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM