python 字典详细使用
1. 字典
- 字典是无序、可变序列。
- 定义字典时,每个元素的键和值用冒号分隔,元素之间用逗号分隔,所有的元素放在一对大括号“{}”中。
- 字典中的键可以为任意不可变数据,比如整数、实数、复数、字符串、元组等等。
- globals()返回包含当前作用域内所有全局变量和值的字典。
- locals()返回包含当前作用域内所有局部变量和值的字典。
1.1 字典创建与删除
- 使用=将一个字典赋值给一个变量:
>>> a_dict = {'server': 'localhost', 'database': 'mysql'}
>>> a_dict
{'database': 'mysql', 'server': 'localhost'}
>>> x = {} #空字典
>>> x
{}
- 使用dict利用已有数据创建字典:
>>> keys = ['a', 'b', 'c', 'd']
>>> values = [1, 2, 3, 4]
>>> dictionary = dict(zip(keys, values))
>>> dictionary
{'a': 1, 'c': 3, 'b': 2, 'd': 4}
>>> x = dict() #空字典
>>> x
{}
- 使用dict根据给定的键、值创建字典
>>> d = dict(name='xiao', age=17)
>>> d
{'age': 17, 'name': 'xiao'}
- 以给定内容为键,创建值为空的字典
>>> adict = dict.fromkeys(['name', 'age', 'sex'])
>>> adict
{'age': None, 'name': None, 'sex': None}
- 可以使用del删除整个字典
1.2 字典元素的读取
- 以键作为下标可以读取字典元素,若键不存在则抛出异常
>>> aDict = {'name':'xiao', 'sex':'male', 'age':17}
>>> aDict['name']
'xiao'
>>> aDict['tel'] #键不存在,抛出异常
Traceback (most recent call last):
File "<pyshell#53>", line 1, in <module>
aDict['tel']
KeyError: 'tel'
- 使用字典对象的get方法获取指定键对应的值,并且可以在键不存在的时候返回指定值。
>>> print(aDict.get('address'))
None
>>> print(aDict.get('address', 'chengdu'))
chengdu
>>> aDict['score'] = aDict.get('score',[])
>>> aDict['score'].append(98)
>>> aDict['score'].append(97)
>>> aDict
{'age': 37, 'score': [98, 97], 'name': 'xiao', 'sex': 'male'}
- 使用字典对象的items()方法可以返回字典的键、值对
- 使用字典对象的keys()方法可以返回字典的键
- 使用字典对象的values()方法可以返回字典的值
>>> aDict={'name':'xiao', 'sex':'male', 'age':17}
>>> for item in aDict.items():
print(item)
('name', 'xiao')
('sex', 'male')
('age', 17)
>>> for key in aDict: #不加特殊说明,默认输出键
print(key)
age
name
sex
>>> for key, value in aDict.items(): #序列解包用法
print(key, value)
age 17
name xiao
sex male
>>> aDict.keys() #返回所有键
dict_keys(['name', 'sex', 'age'])
>>> aDict.values() #返回所有值
dict_values(['xiao', 'male', 17])
1.3 字典元素的添加与修改
- 当以指定键为下标为字典赋值时:1)若键存在,则可以修改该键的值;2)若不存在,则表示添加一个键、值对。
>>> aDict['age'] = 18 #修改元素值
>>> aDict
{'age': 18, 'name': 'xiao', 'sex': 'male'}
>>> aDict['address'] = 'sichuan' #增加新元素
>>> aDict
{'age': 18, 'address': 'sichuan', 'name': 'xiao', 'sex': 'male'}
- 使用字典对象的update()方法将另一个字典的键、值对添加到当前字典对象。
>>> aDict
{'age': 17, 'score': [98, 97], 'name': 'xiao', 'sex': 'male'}
>>> aDict.items()
dict_items([('age', 17), ('score', [98, 97]), ('name', 'xiao'), ('sex', 'male')])
>>> aDict.update({'a':'a','b':'b'})
>>> aDict
{'a': 'a', 'score': [98, 97], 'name': 'xiao', 'age': 17, 'b': 'b', 'sex': 'male'}
- 使用del删除字典中指定键的元素
- 使用字典对象的clear()方法来删除字典中所有元素
- 使用字典对象的pop()方法删除并返回指定键的元素
- 使用字典对象的popitem()方法删除并返回字典中的一个元素
1.4 字典应用案例
- 首先生成包含1000个随机字符的字符串,然后统计每个字符的出现次数。
>>> import string
>>> import random
>>> x = string.ascii_letters + string.digits + string.punctuation
>>> y = [random.choice(x) for i in range(1000)]
>>> z = ''.join(y)
>>> d = dict()
>>> for ch in z: #使用字典保存每个字符出现次数
d[ch] = d.get(ch, 0) + 1
>>> print(d)
1.5 字典推导式
>>> {i:str(i) for i in range(1, 5)}
{1: '1', 2: '2', 3: '3', 4: '4'}
>>> x = ['A', 'B', 'C', 'D']
>>> y = ['a', 'b', 'b', 'd']
>>> {i:j for i,j in zip(x,y)}
{'A': 'a', 'C': 'b', 'B': 'b', 'D': 'd'}
>>> s = {x:x.strip() for x in (' he ', 'she ', ' I')}
>>> s
{' he ': 'he', ' I': 'I', 'she ': 'she'}
python 字典详细使用的更多相关文章
- python字典详细介绍
字典的用途 字典是Python提供的一种常用的数据结构,它用于存放具有映射关系的数据. 字典相当于保存了两组数据,其中一组数据是关键数据,被称为 key:另一组数据可通过 key 来访问,被称为 ...
- Python 字典(Dictionary)操作详解
Python 字典(Dictionary)的详细操作方法. Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字 ...
- Python字典和集合的内部实现
1. 哈希表(Hash tables) 在Python中,字典是通过哈希表实现的.也就是说,字典是一个数组,而数组的索引是经过哈希函数处理后得到的.哈希函数的目的是使键均匀地分布在数组中.由于不同的键 ...
- 'dict_values' object does not support indexing, Python字典dict中由value查key
Python字典dict中由value查key 众所周知,字典dict最大的好处就是查找或插入的速度极快,并且不想列表list一样,随着key的增加越来越复杂.但是dict需要占用较大的内存空间,换句 ...
- 转载 - Vim 的 Python 编辑器详细配置过程 (Based on Ubuntu 12.04 LTS)
出处:http://www.cnblogs.com/ifantastic/p/3185665.html Vim 的 Python 编辑器详细配置过程 (Based on Ubuntu 12.04 LT ...
- Python字典实现
这篇文章描述了在Python中字典是如何实现的. 字典通过键(key)来索引,它可以被看做是关联数组.我们在一个字典中添加3个键/值对: >>> d = {'a': 1, 'b': ...
- Python字典和集合
Python字典操作与遍历: 1.http://www.cnblogs.com/rubylouvre/archive/2011/06/19/2084739.html 2.http://5iqiong. ...
- python 字典排序 关于sort()、reversed()、sorted()
一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...
- python字典中的元素类型
python字典默认的是string item={"browser " : 'webdriver.irefox()', 'url' : 'http://xxx.com'} 如果这样 ...
随机推荐
- synchronized锁机制 之 代码块锁(转)
synchronized同步代码块 用关键字synchronized声明方法在某些情况下是有弊端的,比如A线程调用同步方法执行一个较长时间的任务,那么B线程必须等待比较长的时间.这种情况下可以尝试使用 ...
- WebSocket 实现链接 发送消息
Websocket 原理浅析地址: https://www.cnblogs.com/yuanyongqiang/articles/10457793.html 直接上代码: myWebSocket.py ...
- 用C语言编写一个简单的词法分析程序
问题描述: 用C或C++语言编写一个简单的词法分析程序,扫描C语言小子集的源程序,根据给定的词法规则,识别单词,填写相应的表.如果产生词法错误,则显示错误信息.位置,并试图从错误中恢复.简单的恢复方法 ...
- unity接入谷歌ADMob注意事项
应用不显示广告,可能是广告sdk 依赖项没有注册 dependencies { implementation fileTree(dir: 'bin', include: ['*.jar']) impl ...
- ionic3问题记录
1.Ionic3 websocket 启动没问题,编译的时候报错 events.js:136thrower;// Unhandled 'error' event^Error: read ECONNRE ...
- hbase-bloom filter
bloom fliter的作用主要用于提升hbase的读性能,但是会牺牲一定的存储空间. 原理: bloom fliter是一种空间效率很高的随机数据结构,初始状态时,bloom filter是一个包 ...
- github分支规范
转自:https://www.cnblogs.com/xuld 一.目的 我们制定分支规范,意在实现以下目标: 减少沟通成本:开发者可以很清晰地知道需要修改的代码位于哪个分支. 减少 bug 隐患:避 ...
- token回话保持,axios请求拦截和导航守卫以及token过期处理
1:了解token:有时候大家又说token令牌.整个机制是前端第一次登陆发送请求,后端会根据前端的用户名和密码, 通过一些列的算法的到一个token令牌, 这个令牌是独一无二的,前端每次发送请求都需 ...
- laraval migration 新增字段或者修改字段的方法
1.进入项目根目录执行artisan命令生成migration文件,可以指定--table和--path参数,会在对应目录下生成migration文件. php artisan make:migrat ...
- 一次HTTP请求响应涉及了哪些?
HTTP请求和响应步骤 TCP/IP协议 TCP三次握手 HTTP协议 HTTP请求报文 HTTP响应报文 TCP四次挥手 HTTP请求和响应步骤 以上完整表示了HTTP请求和响应的7个步骤,下面从T ...