python如何实现多层级自动赋值字典

 更新时间:2023年08月12日 10:15:16   作者:小胖_@  
这篇文章主要介绍了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空间中绘制平面的案例

    这篇文章主要介绍了python 利用matplotlib在3D空间中绘制平面的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • 浅谈Django2.0 加xadmin踩的坑

    浅谈Django2.0 加xadmin踩的坑

    今天小编就为大家分享一篇浅谈Django2.0 加xadmin踩的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Python导入自定义路径的方法

    Python导入自定义路径的方法

    这篇文章主要介绍了Python导入自定义路径的方法,文章基于python的相关资料展开详细内容介绍,需要的小伙伴可以参考一下
    2022-04-04
  • 浅谈django开发者模式中的autoreload是如何实现的

    浅谈django开发者模式中的autoreload是如何实现的

    下面小编就为大家带来一篇浅谈django开发者模式中的autoreload是如何实现的。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • python实现词法分析器

    python实现词法分析器

    这篇文章主要为大家详细介绍了python实现词法分析器的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • python下如何查询CS反恐精英的服务器信息

    python下如何查询CS反恐精英的服务器信息

    这篇文章主要介绍了python下如何查询CS反恐精英服务器信息的方法,分别分享了反恐精英1.5版本和反恐精英1.6版本的实现方法示例,有需要的朋友们可以参考借鉴,下面来一起学习学习吧。
    2017-01-01
  • Python格式化日期时间操作示例

    Python格式化日期时间操作示例

    这篇文章主要介绍了Python格式化日期时间操作,结合实例形式分析了Python使用time模块针对日期时间的获取、转换、格式化、判断等相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • Windows10下Tensorflow2.0 安装及环境配置教程(图文)

    Windows10下Tensorflow2.0 安装及环境配置教程(图文)

    这篇文章主要介绍了Windows10下Tensorflow2.0 安装及环境配置教程(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • python内置模块之上下文管理contextlib

    python内置模块之上下文管理contextlib

    这篇文章介绍了python内置模块之上下文管理contextlib,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Python 代码性能优化技巧分享

    Python 代码性能优化技巧分享

    选择了脚本语言就要忍受其速度,这句话在某种程度上说明了 python 作为脚本的一个不足之处,那就是执行效率和性能不够理想,特别是在 performance 较差的机器上,因此有必要进行一定的代码优化来提高程序的执行效率
    2012-08-08

最新评论