【发布时间】:2018-04-08 04:42:25
【问题描述】:
为什么在 python3 中会发生这种情况?
1) 我从 redis 获取 msgpack 数据
2) 我打开包装得到以下内容
3) 返回的类型是一个dict:
meta = msgpack.unpackb(data[1])
print(type(meta))
<class 'dict'>
meta = {b'api_key': b'apikey1',
b'sensor_id': b'sid1',
b'version': b'1.0'}
如果我运行以下命令: sensor_meta['sensor_id']
{b'api_key': b'apikey1',
b'sensor_id': b'sid1',
b'version': b'1.0'}
Traceback (most recent call last):
File "/Users//worker.py", line 247, in <module>
print(meta['sensor_id'])
KeyError: 'sensor_id'
但如果我使用 sensor_meta[b'sensor_id'] 那么它可以工作。
什么是“b”,我怎样才能摆脱它?如何转换整个对象以便没有 b ?
所以如果我执行以下操作:
print(type(meta['sensor_id']))
<class 'bytes'>
为什么是字节以及它是如何到达那里的?每次我想在哈希中使用键时,我都不会附加 b。
谢谢
【问题讨论】:
-
你能不能也给
data[1]添加信息 -
无关...data[1] 是我要解压的数据并列出
-
但我正式定义了元
-
你在
data[1]有什么类型的数据?
标签: python-3.x msgpack