python如何实现多层级自动赋值字典
python多层级自动赋值字典
dict 只能单层级赋值
item['20161101'] = 2
defaultdict 只能双层级赋值
item['20161101']["age"] = 2
使用方法:
import collections bag = ['apple', 'orange', 'cherry', 'apple','apple', 'cherry', 'blueberry'] count = collections.defaultdict(int) for fruit in bag: count[fruit] += 1 输出: defaultdict(<class 'int'>, {'apple': 3, 'orange': 1, 'cherry': 2, 'blueberry': 1})
多层级自动赋值字典
item['20161101']["age"]["444"] = 2
实现多层级自动赋值 除了可以重载__getitem__魔术方法,也可以实现__missing__魔术方法
1.重载__getitem__魔术方法:
def __getitem__(self, item): try: return dict.__getitem__(self, item) except KeyError: value = self[item] = type(self)() return value
2.实现__missing__魔术方法:
def __missing__(self, key): value = self[key] = type(self)() return value
3.使用方法:
class multidict(dict): def __getitem__(self, item): try: return dict.__getitem__(self, item) except KeyError: value = self[item] = type(self)() return value item = multidict() item['20161101']["age"] = 20 item['20161102']['num'] = 30 print(item)
python字典一键赋多值
方案一
(1) list作为dict的值,值允许重复,append添加值
key = 0 value = [1,5] exp = dict() exp.setdefault(key,[]).append(value) value = [2,5] exp.setdefault(key,[]).append(value) print(exp)
输出:
{0: [[1, 5], [2, 5]]}
(2)set作为dict的值,值不允许重复,add添加值
key = 0 value = 1 exp = dict() exp.setdefault(key,set()).add(value) value = 2 exp.setdefault(key,set()).add(value) print(exp)
输出:
{0: {1, 2}}
方案二
使用collections.defaultdict方法
(1)collections.defaultdict(list),值可以重复
import collections key = 0 value = 1 exp = collections.defaultdict(list) exp[key].append(value) value = 1 exp[key].append(value) print(exp)
输出:
defaultdict(<class 'list'>, {0: [1, 1]})
(2)collections.defaultdict(set),值不允许重复
import collections key = 0 value = 1 exp = collections.defaultdict(set) exp[key].add(value) value = 1 exp[key].add(value) value = 5 exp[key].add(value) print(exp)
输出:
defaultdict(<class 'set'>, {0: {1, 5}})
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
python 利用matplotlib在3D空间中绘制平面的案例
这篇文章主要介绍了python 利用matplotlib在3D空间中绘制平面的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2021-02-02浅谈django开发者模式中的autoreload是如何实现的
下面小编就为大家带来一篇浅谈django开发者模式中的autoreload是如何实现的。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-08-08Windows10下Tensorflow2.0 安装及环境配置教程(图文)
这篇文章主要介绍了Windows10下Tensorflow2.0 安装及环境配置教程(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-11-11
最新评论