专栏名称: Python程序员杂谈
关注PythonWeb开发及相关领域的方方面面,分享在实际工作中遇到的问题及解决方案。关注the5fire,了解Python开发的点点滴滴。
目录
相关文章推荐
91产品  ·  用对AI工具,简直逆天了!DeepSeek、 ... ·  14 小时前  
人人都是产品经理  ·  22岁拿下19K产品经理offer,我是如何 ... ·  18 小时前  
51好读  ›  专栏  ›  Python程序员杂谈

不能pickle的OrderedDict.keys()对象(Py2-bt-py3)

Python程序员杂谈  · 公众号  ·  · 2017-06-05 20:58

正文

一则来自django-redis的报错:TypeError: can't pickle odict_keys objects

迁移到Python3时遇到的一个问题,Py3中的OrderedDict.keys()返回的是一个对象:odict_keys。可以迭代的对象,但是不支持index操作,和切片操作。并且不能pickle。所以我就遇到这个坑了。不过它多了一个更新keys的功能,可以看最后的参考链接。

代码如下:

  1. # coding:utf-8

  2. from collections import OrderedDict

  3. od = OrderedDict({"a": 1, "b": 2})

  4. print(od.keys(), type(od.keys()))

  5. od_keys = od.keys()

  6. od.update({"c": 'the5fire'})

  7. print(od_keys)

python2.7和Python3.6下分别运行:

  1.  tmp python2.7 t_py3.py

  2. (['a', 'b'], <type 'list'>)

  3. ['a', 'b']

  4.  tmp python3.







请到「今天看啥」查看全文