Python 中的字典是Python中一个键值映射的数据结构,下面介绍一下如何优雅的操作字典.

1.1 创建字典

Python有两种方法可以创建字典,第一种是使用花括号,另一种是使用内建 函数dict

>>> info = {}
>>> info = dict()

1.2 初始化字典

Python可以在创建字典的时候初始化字典

>>> info = {"name" : 'cold'}
>>> info = dict(name = 'cold') # 更优雅

很明显第二种方法更加的优雅和减少一些特殊字符的输入,但是有种情况第二种不能胜任

>>> key = 'name'
>>> info = { key :'cold'} # {'name':'cold'}
>>> info = dict(key = 'cold') # {'key': 'cold'}

明显第二种方法就会引发一个不容易找到的bug

Python字典还有一种初始化方式,就是使用字典的fromkeys方法可以从列表中获取元素作为键并用None或fromkeys方法的第二个参数初始化

>>> info = {}.fromkeys(['name', 'blog'])
>>> info
{'blog': None, 'name': None}
>>> info = dict().fromkeys(['name', 'blog'])
>>> info
{'blog': None, 'name': None}
>>> info = dict().fromkeys(['name', 'blog'], 'linuxzen.com')
>>> info
{'blog': 'linuxzen.com', 'name': 'linuxzen.com'}

1.3 优雅的获取键值

字典可以这样获取到键的值

>>> info = {'name':'cold', 'blog':'linuxzen.com'}
>>> info['name']
'cold'

但是如果获取不存在的键的值就会触发的一个KeyError异常,字典有一个get方法,可以使用字典get方法更加优雅的获取字典

>>> info = dict(name= 'cold', blog='www.linuxzen.com')
>>> info.get('name')
'cold'
>>> info.get('blogname')
None
>>> info.get('blogname', 'linuxzen')
'linuxzen'

我们看到使用get方法获取不存在的键值的时候不会触发异常,同时get方法接收两个参数,当不存在该键的时候就会返回第二个参数的值 我们可以看到使用get更加的优雅

1.4 更新/添加

Python 字典可以使用键作为索引来访问/更新/添加值

>>> info = dict()
>>> info['name'] = 'cold'
>>> info['blog'] = 'linuxzen.com'
>>> info
{'blog': 'linuxzen.com', 'name': 'cold'}
>>> info
{'blog': 'linuxzen.com', 'name': 'cold night'}

同时Python字典的update方法也可以更新和添加字典

>>> info = dict(name='cold', blog='linuxzen.com')
>>> info.update({'name':'cold night', 'blogname':'linuxzen'})
>>> info
{'blog': 'linuxzen.com', 'name': 'cold night', 'blogname': 'linuxzen'}
>>> info.update(name='cold', blog='www.linuxzen.com') # 更优雅
>>> info
{'blog': 'www.linuxzen.com', 'name': 'cold', 'blogname': 'linuxzen'}

Python字典的update方法可以使用一个字典来更新字典,也可以使用参数传递类似dict函数一样的方式更新一个字典,上面代码中哦功能的第二个更加优雅,但是同样和dict函数类似,键是变量时也只取字面值

1.5 字典删除

可以调用Python内置关键字del来删除一个键值

>>> info = dict(name='cold', blog='linuxzen.com')
>>> info
{'blog': 'linuxzen.com', 'name': 'cold'}
>>> del info['name']
>>> info
{'blog': 'linuxzen.com'}

同时也可以使用字典的pop方法来取出一个键值,并删除

>>> info = dict(name='cold', blog='linuxzen.com')
>>> info.pop('name')
'cold'
>>> info
{'blog': 'linuxzen.com'}

1.6 其他操作

获取所有key

>>> info = dict(name='cold', blog='linuxzen.com')
>>> info.keys()
['blog', 'name']

获取key,value并循环

>>> info = dict(name='cold', blog='linuxzen.com')
>>> for key, value in info.items():
... print key, ':', value
...
blog : linuxzen.com
name : cold

以上信息来源于:https://www.linuxzen.com/python-you-ya-de-cao-zuo-zi-dian.html

Python 优雅的操作字典【转】的更多相关文章

  1. Python 优雅的操作字典

    Python 中的字典是Python中一个键值映射的数据结构,下面介绍一下如何优雅的操作字典. 来源:https://www.linuxzen.com/python-you-ya-de-cao-zuo ...

  2. python基础之 列表、元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...

  3. 小白的Python之路 day2 字符串操作 , 字典操作

    1. 字符串操作 特性:不可修改 name.capitalize() 首字母大写 name.casefold() 大写全部变小写 name.center(50,"-") 输出 '- ...

  4. Python学习杂记_6_字典常用操作

    字典操作 字典是由一对花括号括起来的一组“键值对”,每个键值对就是字典的一个元素,元素在字典中是无序的,常见操作如下: info = { 'name':'xiaoming', 'sex':'nan', ...

  5. python 创建字典以及操作字典----这是基础知识

    当你编程久了,发现所有的东西都是建立在基础之上的,庞大的代码 你要识别出它的类型是什么 或者返回后类型是什么!? 根据返回的类型 或者需要操作的对象是什么类型  就可以选择相应的方法进行处理 #创建字 ...

  6. python高级之操作数据库

    python高级之操作数据库 本节内容 pymysql介绍及安装 使用pymysql执行sql 获取新建数据自增ID fetch数据类型设置 1.pymysql介绍及安装 在python2中连接数据库 ...

  7. Python :open文件操作,配合read()使用!

    python:open/文件操作 open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) 如何打开文件 handle=open(file_name,a ...

  8. Python成长笔记 - 基础篇 (三)python列表元组、字典、集合

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码   一.列表和元组的操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义 ...

  9. [转载] Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结

    创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_star ...

随机推荐

  1. [转载]Sublime Text 3 搭建 React.js 开发环境

    [转载]Sublime Text 3 搭建 React.js 开发环境 Sublime有很强的自定义功能,插件库很庞大,针对新语言插件更新很快,配合使用可以快速搭建适配语言的开发环境. 1. babe ...

  2. Codeforces Round #353 (Div. 2) D. Tree Construction 二叉搜索树

    题目链接: http://codeforces.com/contest/675/problem/D 题意: 给你一系列点,叫你构造二叉搜索树,并且按输入顺序输出除根节点以外的所有节点的父亲. 题解: ...

  3. 关于IE下AJAX的问题探讨

    今天JS练手的时候,想封装一个发送AJAX请求的对象,当然,是想要兼容全浏览器的.代码如下: var Ajax = { xhr: null, callback: null, XMLHttp: func ...

  4. Codis集群的搭建与使用

    一.简介 Codis是一个分布式的Redis解决方案,对于上层的应用来说,连接Codis Proxy和连接原生的Redis Server没有明显的区别(不支持的命令列表),上层应用可以像使用单机的Re ...

  5. 安装wine qq2012

    添加软件源:vi /etc/apt/sources.list deb http://http.kali.org/kali kali main non-free contribdeb-src http: ...

  6. LCT模板

    之前一直用的LCT模板,因为其实个人对LCT和Splay不是很熟,所以用起来总觉得略略的坑爹,过了一段时间就忘了,但事实上很多裸的LCT要改的东西是不多的,所以今天写了些注释,以后可能套起模板来会得心 ...

  7. POJ 2185 Milking Grid (KMP,求最小覆盖子矩阵,好题)

    题意:给出一个大矩阵,求最小覆盖矩阵,大矩阵可由这个小矩阵拼成.(就如同拼磁砖,允许最后有残缺) 正确解法的参考链接:http://poj.org/showmessage?message_id=153 ...

  8. Android 源码 判断网络数据类型

    private final void updateDataNetType(int slotId) { int tempDataNetType; NetworkType tempDataNetType3 ...

  9. MetInfo安装

    安装MetInfo企业网站管理系统需要经历三个步骤:安装准备.上传文件.安装系统. 第一步:安装前的准备 环境要求:需要支持PHP并提供Mysql数据库的空间(虚拟主机),详细要求: 下载MetInf ...

  10. php获取网页header信息的4种方法

    php获取网页header信息的方法多种多样,就php语言来说,我知道的方法有4种, 下面逐一献上. 方法一:使用get_headers()函数 推荐指数: ★★★★★ get_header方法最简单 ...