在python中默认的dict方法定义多维字典较为复杂

并不能直接通过a=dict()

a['b']['c']['d'] = 1

>>> a['b']['c']['d']=1

Traceback (most recent call last):

File "", line 1, in

KeyError: 'b'

如果想要创建多维字典,需要这样做>>> a={}

>>>

>>> a['b'] = {}

>>> a['b']['c']={}

>>> a['b']['c']['d'] = 1

>>> a

{'b': {'c': {'d': 1}}}

比较繁琐

比较推荐的创建多维字典的方法有4种:

第一种from collections import defaultdict

def site_struct():

return defaultdict(board_struct)

def board_struct():

return defaultdict(user_struct)

def user_struct():

return dict(pageviews=0,username='',comments=0)

userdict = defaultdict(site_struct)

userdict['site']['board']['username'] = 1

userdict['par']['chl']['username'] = 'ceshi'

print userdict['site']['board']['username']

print userdict['par']['chl']['username']

利用collections模块defaultdict方法的特性,利用外部函数来实现

第二种userdict = {}

userdict[('site1', 'board1', 'username')] = 'tommy'

利用元组来充当多维字典的key,即将多维key按照规则放入元组中,使用该元组作为字典的key并赋值,以达到多维key的效果

第三种from collections import defaultdict

from collections import Counter

def multi_dimensions(n, type):

if n<=1:

return type()

return defaultdict(lambda:multi_dimensions(n-1, type))

m = multi_dimensions(5, Counter)

m['d1']['d2']['d3']['d4'] = 1

>>> m

defaultdict( at 0x322c70>, {'d1': defaultdict( at 0x322870>, {'d2': defaultdict( at 0x322cf0>, {'d3': defaultdict( at 0x322d30>, {'d4': 1})})})})

这种方法更像是一个迭代器,迭代创建

第四种from collections import defaultdict

def nesteddict():

return defaultdict(nesteddict)

>>> c['key1']['key2']['key3'] = 10

>>> c

defaultdict(, {'key1': defaultdict(, {'key2': defaultdict(, {'key3': 10})})})

这种方法从根本上讲,就是一个迭代器

python多维字典_python定义多维字典相关推荐

  1. Python字典(字典的定义,创建字典,获取字典中的数据,字典元素增删改,获取字典视图,字典的遍历,字典的特点,字典生成公式)

    1.字典的定义 2.创建字典 3.获取字典中的数据 4.字典元素增删改 5.获取字典视图 lst={'数值1':300,'数值2':100,'数值3':400,'数值4':200} print(lst ...

  2. python创建二维空列表_python定义二维空数组

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 稀疏矩阵的格式存储矩阵的一般方法是采用二维数组,其优点是可以随机地访问每一个元素 ...

  3. python paramiko模块下载_Python自动化运维实战:使用Python管理网络设备

    现在,我们已经知道如何在不同的操作系统中使用和安装Python以及如何使用EVE-NG搭建网络拓扑.在本章中,我们将学习如何使用目前常用的网络自动化库自动完成各种网络任务.Python可以在不同的网络 ...

  4. python输入二维数组_Python输入二维数组方法

    Python输入二维数组方法 前不久对于Python输入二维数组有些不解,今日成功尝试,记以备忘.这里以输入1-9,3*3矩阵为例 n=int(input()) line=[[0]*n]*n for ...

  5. python中遍历二维数组_python遍历二维数组-女性时尚流行美容健康娱乐mv-ida网

    女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页  > 高级搜索 二 维 数组 5.2.1 二 ...

  6. python生成二维码_python生成二维码的实例详解

    python生成二维码的实例详解 版本相关 操作系统:Mac OS X EI Caption Python版本:2.7 IDE:Sublime Text 3 依赖库 Python生成二维码需要的依赖库 ...

  7. python中字典的定义及创建字典

    一.字典(dictionary) 字典和列表类似,也是可变序列,只是与列表不同,它是无序的可变序列,保存的内容是以"键--值对"的形式存放,这类似于我们使用查找汉字的新华字典,它可 ...

  8. python自学第8天字典_python自学日记7——字典

    学会把复杂问题拆解成自己已经掌握的基础问题才是正确的学习之道 1.编写一个函数,读入words.txt,并将它们作为键保存到一个字典中 后面还有使用in检查某单词是否在字典中,按说这个并不难,先读取单 ...

  9. python只读属性怎么设置_Python 定义只读属性的实现方式

    Python是面向对象(OOP)的语言, 而且在OOP这条路上比Java走得更彻底, 因为在Python里, 一切皆对象, 包括int, float等基本数据类型. 在Java里, 若要为一个类定义只 ...

最新文章

  1. HTML5学习笔记简明版(3):新元素之hgroup,header,footer,address,nav
  2. 第十六届全国大学生智能车竞赛创意组-讯飞智慧餐厅
  3. Btrace入门到熟练小工完全指南
  4. mysql支持ASCII_MySQLASCII()函数返回字符的ASCII码值
  5. pythondjango项目集成_Django集成celery实战小项目
  6. html模板原型,政务管理系统原型模板分享
  7. winXP系统如何打开剪贴板查看器
  8. 新思课堂C语言答案,新思课堂APP最新版下载_新思课堂APP官方版1.6.8下载_QQ下载站...
  9. 获取QQ音乐排行榜数据
  10. 「Spark从入门到精通系列」4.Spark SQL和DataFrames:内置数据源简介
  11. 可换皮肤的Qt登录界面
  12. 灵魂书籍 | 《记忆力心理学 | 赫尔曼·艾宾浩斯》
  13. RFID技术与畜牧业保险理赔的应用解决方案
  14. 4412运行java_Tiny4412 Android 启动流程
  15. VIF-Net:RGB和红外图像融合的无监督框架
  16. 给文本设置下划线或者删除线
  17. 什么是架构?什么是架构师?
  18. 用node.js和express.js和jade搭建轻型cms系统
  19. JAVA分布式医疗云平台系统开发实战第一节 open-his系统介绍
  20. python爬虫基础06-常见加密算法

热门文章

  1. Win10--在右键菜单中添加cmd.exe(在此处打开CMD窗口)
  2. 十分钟开发物联网:智能气象站(4G版)
  3. Hello New World 写在 Conflux 网络 Tethys 上线之际
  4. 个人申请企业邮箱还是163个人邮箱?个人邮箱怎么申请登录呢?
  5. 机器学习:Linear Discriminant Analysis(过程详解+实例代码MATLAB实现
  6. linux 移除用户所在的组,Linux用户及用户组添加和删除操作
  7. js 事件(绑定、解绑、三个阶段、相关方法)
  8. seo文章批量更新-SEO文章自动批量生成
  9. win10设置以管理员身份开机启动
  10. mysql子查询不支持limit问题解决