python – DefaultDict的替代品

python – DefaultDict的替代品,第1张

概述不幸的是,对我来说,我需要使脚本向后兼容w / Python 2.4,并且2.4版本中不存在defaultdict. 什么可以替代呢? 给定键的数据结构是以下列表: [{'red': (12, 1, 12), 'white': (30, 2, 60), 'blue': (8, 1, 4), 'orange': (9, 4, 8), 'black': (10, 12, 4)}] 编辑: 添加使用信息 不幸的是,对我来说,我需要使脚本向后兼容w / Python 2.4,并且2.4版本中不存在defaultdict.

什么可以替代呢?

给定键的数据结构是以下列表:

[{'red': (12,1,12),'white': (30,2,60),'blue': (8,4),'orange': (9,4,8),'black': (10,12,4)}]

编辑:
添加使用信息.首先,我用以下内容构建默认dict:

defDict[key1].append(... ...)

然后它传递给密钥的几种方法:val(列表)查找和密钥删除.

特别是删除:

if len(defDict[key1][0]) == 0:            del defDict[key1]

编辑:nonetype上的错误

print "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"        print defDict[key]        print "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"        if len(defDict[key][0]) == 0:            #del defDict[key]

错误:

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxNoneyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyif len(defDict[key][0]) == 0:TypeError: 'nonetype' object has no attribute '__getitem__'

我认为错误来自关键:

print "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"        print defDict[key]        print "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"

输出:

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx       None       yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
解决方法 您可以以非常简单的方式实现自己的defaultdict.

def defaultdict(default_type):    class DefaultDict(dict):        def __getitem__(self,key):            if key not in self:                dict.__setitem__(self,key,default_type())            return dict.__getitem__(self,key)    return DefaultDict()List_dict = defaultdict(List)List_dict['a'].append(1)print List_dict # {'a': [1]}
总结

以上是内存溢出为你收集整理的python – DefaultDict的替代品全部内容,希望文章能够帮你解决python – DefaultDict的替代品所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1193997.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存