字典 05

字典 05

        字典

一 ,字典是Python中唯一的一个映射类型.以{}括起来的键值对组成.在字典中key是唯一的 value 可以不唯一

  1 .语法 {key1:value1,key2:value2} key必须是不可变的

    由于dict 保存的数据不是按照添加进去的顺序保存的,是按照hash表顺序保存的,而hash表不是连续的,所以不能进行切片工作 只能通过key来获取dict中的数据

  2 .字典的增删改查和其他相关操作

    2.1增加

      dic['new key'] = 'new value' # 可以通过该方法添加新的键值对 也可以通过该方法修改原有键值对的value值

      dic.setdefault('key' , value) # 如果dic 存在了该key,则不会起作用 如果不存在该key,则添加到字典中 所以setdefault兼具两个功能,1.查询 2,新增

    2.1 删除

      ret  = dic.pop() 弹出某个键值对

      del dic['key'] 删除某个键值对

      dic.popitem() 随机删除

      dic.clear() 清空字典

    2.3 修改

      dic[key] = 新值

      dic.update(dic1) # 将dic1中的内容更新到dic 中 如果key 重名 则修改替换 不存在 则新增

    2.4 查询 一般用key来查找具体数据

      1.用key 来直接查询

      2.get(key,如果不存在返回的数据)

      3.setdefault() 1.执行新流程 2.查询结果

    2.5其他相关操作

      keys() 获取所有的键  dict.keys() # dict_keys(['id', 'name', 'age', 'ok'])  类似于列表但又不是列表的一组数据 当成list来用就行 

      values() 获取所有的value dic.values() 形式同列表 也当做list来用

      items() 获取的是键值对 返回的是元组 可以进行结构  直接把元组或者列表中的数据拿出来

      a,  b,   c = (a1,  b1,  c1)

     2.6 , 遍历字典

      for key in dict:

        dict[key]

      for k , v in dict.items():

        k,v

三 字典的嵌套   类似于 列表的嵌套

 

      

 

posted @ 2018-09-24 16:08 你没有想象的那么重要 阅读( ...) 评论( ...) 编辑 收藏
字典转换为字节串后,如果需要将字节串还原为字典,可以通过不同的方式实现,具体取决于原始字节串的编码格式和序列化方式。 ### 从 JSON 字符串编码的字节串转换为字典 如果字节串是通过将字典序列化为 JSON 字符串并使用 UTF-8 编码生成的,则可以通过 `decode()` 方法将字节串还原为字符串,并使用 `json.loads()` 转换为字典对象: ```python import json byte_data = b'{"name": "Alice", "age": 30}' json_str = byte_data.decode('utf-8') data = json.loads(json_str) ``` 这种方式适用于使用 `json.dumps()` 序列化生成的字节串 [^2]。 ### 从 `pickle` 序列化的字节串转换为字典 如果字节串是使用 `pickle.dumps()` 生成的,则可以通过 `pickle.loads()` 方法将其反序列化为原始字典对象: ```python import pickle byte_data = b'\x80\x04\x95#\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x04name\x94\x8c\x05Alice\x94\x8c\x03age\x94K\x1e\x94u.' data = pickle.loads(byte_data) ``` 此方法适用于 Python 对象的完整序列化和反序列化,能够保留原始对象的结构和类型 [^2]。 ### 从 `msgpack` 序列化的字节串转换为字典 如果字节串是使用 `msgpack.packb()` 生成的,则可以通过 `msgpack.unpackb()` 方法将其反序列化为字典对象: ```python import msgpack byte_data = b'\x82\xa4name\xa5Alice\xa3age\x1e' data = msgpack.unpackb(byte_data) ``` 该方法适用于高效、紧凑的二进制序列化格式,适合网络通信和跨语言数据交换 。 ### 注意事项 - 使用 `json.loads()` 时,确保字节串是通过 `json.dumps()` 生成的,并且数据结构符合 JSON 规范。 - `pickle.loads()` 只适用于由 `pickle.dumps()` 生成的字节串,且不推荐用于不可信数据,因为可能存在安全风险。 - `msgpack.unpackb()` 要求字节串是通过 `msgpack.packb()` 生成的,并且支持的数据类型需符合 `msgpack` 的规范。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值