老男孩Python学习之数据类型 字典
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了老男孩Python学习之数据类型 字典相关的知识,希望对你有一定的参考价值。
以下是老男孩教育编写的Python教学资料,转载请注明出处:http://www.oldboyedu.com
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。
字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
注意: python3.6 之后字典更新为有序
一. 定义字典
字典是另一种可变容器模型,且可存储任意类型对象。 字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中, 格式如下所示:
d = { 'name' : 'shaowei','age':18 }
键必须是唯一的,但值则不必。 值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。 一个简单的字典实例:
dict1 = {'Alex': '2341', 'Eva_j': '9102', 'Qimi': '3258'}
也可如此创建字典:
dict1 = {'name':'guobaoyuan'} dict2 = {'age': 18}
二. 字典的增删改查
增加
在原有的字典中进行键值对增加
dict1 = {'user':'alex','password':'alex3714'} dict1['id'] = 4 print(dict1) 运行结果: {'user': 'alex', 'password': 'alex3714', 'id': 4}
删除
能删单一的元素也能清空字典,清空只需一项操作。 显示删除一个字典用del命令,如下实例:
1)del dict1 = {'user':'alex','password':'alex3714'} del dict1['user']; #删除键是'user'的条目 del dict1 ; #删除词典 2)clear() dict1 = {'user':'alex','password':'alex3714'} dict1.clear(); #清空词典所有条目
修改
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:
dict1 = {'user':'alex','password':'alex3714'} dict1['user'] = 'wusir' # 这是对现有的字段进行修改 print(dict1['user']) # 获取到的内容就是wusir print(dict1) # 获取到的就是{'user':'alex','password':'alex3714','School':"DPS School"}
查找
方式一:直接按key查找
如果字典中key不存在会报错
dict1 = {'user':'alex','password':'alex3714'} print(dict1['user']) print(dict1['password']) print(dict1['age']) #如果字典中没有age键,会报错 运行结果: alex alex3714 Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'name'
方式二:get查找
如果字典中没有此key,不会报错
dict1 = {'user':'alex','password':'alex3714'} print(dict1..get('user')) print(dict1.get('password')) print(dict1['age']) #如果字典中没有age键,会取None 运行结果: alex alex3714 None
三. 字典键的特性
字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。
两个重要的点需要记住:
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,就会默认使用最后定义的这个键值对,如下实例:
dict1 = {'user':'alex','password':'alex3714','user':'egon'} dict1['user'] 运行结果: 'egon'
2)键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行,如下实例:
dict = {['Name']: 'guobaoyuan', 'Age': 7}; print "dict['Name']: ", dict['Name']; 以上实例输出结果: Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list'
四. 字典内置方法
1. dict.clear()
删除字典内所有元素
dict1 = {'name':'guobaouyuan'} dict1.clear() print(dict1) 运行结果: {}
2. dict.fromkeys(键,值)
创建一个新字典,健必须是可迭代的数据类型(列表,元祖,字符串,集合,字典),值就是每个键值对中默认的值
dict1 = dict.fromkeys([1,2,3],'guobaoyuan') dict2 = dict.fromkeys('name','guobaoyuan') print(dict1) print(dict2) 运行结果: {1: 'guobaoyuan', 2: 'guobaoyuan', 3: 'guobaoyuan'} {'n': 'guobaoyuan', 'a': 'guobaoyuan', 'm': 'guobaoyuan', 'e': 'guobaoyuan'}
3. dict.get(key, default=None)
返回指定键的值,如果值不在字典中返回default值
dict1 = {'name':'guobaoyuan','age':19} print(dict1.get('U','没有找到啊!')) 运行结果: 没有找到啊!
4. dict.items()
以列表返回可遍历的(键, 值) 元组数组
dict1 = {'name':'guobaoyuan','age':19} print(dict1.items()) 运行结果: dict_items([('name', 'guobaoyuan'), ('age', 19)])
5. dict.keys()
以列表返回一个字典所有的键
dict1 = {'name':'guobaoyuan','age':19} print(dict1.keys()) 运行结果: dict_keys(['name', 'age'])
6. dict.setdefault(key, default=None)
和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
dict1 = {'name':'guobaoyuan','age':19} dict1.setdefault('id',1) dict1.setdefault('age',18) print(dict1) 运行结果: {'name': 'guobaoyuan', 'age': 19, 'id': 1}
7. dict.update(dict2)
把字典dict2的键/值对更新到dict里
dict1 = {'name':'guobaoyuan','age':19} dict2 = {'id':333} dict1.update(dict2) print(dict1) 运行结果: {'name': 'guobaoyuan', 'age': 19, 'id': 333}
8. dict.values()
以列表返回字典中的所有值
dict1 = {'name':'guobaoyuan','age':19} print(dict1.values()) 运行结果: dict_values(['guobaoyuan', 19])
9. pop(key[,default])
删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
dict1 = {'name':'guobaoyuan','age':19} print(dict1.pop('name')) print(dict1) 运行结果: guobaoyuan {'age': 19}
10. popitem()
随机返回并删除字典中的一对键和值。
dict1 = {'name':'guobaoyuan','age':19} print(dict1.popitem()) print(dict1) 运行结果: ('ss', 44) {'name': 'guobaoyuan', 'age': 19}
以上是关于老男孩Python学习之数据类型 字典的主要内容,如果未能解决你的问题,请参考以下文章