字典是另一种可变容器模型,可存储任意类型的对象。
字典的每个键值(key=>value)对用冒号分隔,每个对之间用逗号分隔,整个字典包括在花括号里,格式如下
d = {key1 : value,key2 : value2}
键必须是唯一,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
一个简单字典实例:
dict = {‘Alice’: ‘2341’,’Beth’ : ‘9102’,’Cecil’ : ‘3258’}
创建字典:
dict1 = {‘abc’ : 456}
dict2 = {‘abc’ : 123, 98.6 : 37}
访问字典的值
把相应的键放到方括号中:
修改字典:
向字典添加新内容的方法是增加新的键/值对,修改或删除已有的键值:
删除字典元素:
能删单元的元素,也能清空字典,清空只需要一项操作。
显示删除一个字典用del命令。
字典键的 特性
字典值可以是任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。
两个重要的点需要记住:
1) 不允许同一个键出现两次,创建时如果同一个键被赋值两次,后一个值会被记住。
2) 键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行。
字典内置函数&方法
- len(dict):计算字典元素的个数,即键的总数。
- str(dict):输出字典,以可打印的字符串表示。
- type(variable):返回可输入的变量类型,如果变量是字典,就返回字典类型。
Python字典包含了以下的内置方法
函数 | 描述 |
radiansdict.clear() | 删除字典内所有元素 |
radiansdict.copy() | 返回一个字典的浅复制 |
radiansdict.fromkeys() | 创建一个字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
radiansdict.get(key,default=None) | 返回指定键的值,如果值不存在字典值中就返回default值 |
key in dict | 如果键在字典dict里返回true,否则返回false |
radiansdict.items() | 以列表返回可遍历的(键,值)元组数组 |
radiansdict.keys() | 返回一个迭代器,可以使用list()来转换成列表 |
radiansdict.setdefault(key,default=None) | 和get()相似,但如果键不存在与字典中, 将会添加键并将值设为default |
radiansdict.update(dict2) | 把字典dict2的键/值更新到dict中 |
radiansdict.values() | 返回一个迭代器可以使用list()来转换成列表 |
pop(key[default]) | 删除字典给定键key所对应的值,返回值为被删除的值。key值必须给出,否则,返回default值 |
popitem() | 随机返回并删除字典中一对键和值(一般删除末尾对) |
字典的键值是“只读”的,所以不能对键和值分别进行初始化
字典是支持无限嵌套的
用字典记录学生姓名和分数,再分级
/*** student.py ***/ students={} write = 1 while write:name = str(input("please input name : "))grade = int(input("please input grade : "))students[str(name)] = gradewrite = int(input("please input ?\n 1--continue 0--exit")) print('name rate'.center(20,'-')) for key,value in students.items():if value >= 90:print("%s %s A ".center(20,'-')%(key,value))elif 89 > value >= 60:print("%s %s B ".center(20,'-')%(key,value))else:print("%s %s C ".center(20,'-')%(key,value))
运行结果:
robot@ubuntu:~/wangqinghe/python/20190823$ python3.5 key.py
please input name : wang
please input grade : 12
please input ?
1--continue 0--exit1
please input name : qing
please input grade : 67
please input ?
1--continue 0--exit1
please input name : he
please input grade : 98
please input ?
1--continue 0--exit0
-----name rate------
------qing 67 B ------
------wang 12 C ------
------he 98 A ------
字典可以通过以下方式调换key和value,注意原始value类型是不可变类型:
/*** reverse.py ***/ dic = {'a':1,'b':2,'c':3, } reverse = {v:k for k,v in dic.items()} print(dic) print(reverse)
运行结果:
robot@ubuntu:~/wangqinghe/python/20190823$ python3.5 rever.py
{'a': 1, 'c': 3, 'b': 2}
{1: 'a', 2: 'b', 3: 'c'}
循环显示字典key和value值:
/*** show.py ***/ b = {'a' : 'runoob','b':'google'} for i in b.values():print(i) for c in b.keys():print(c)
运行结果:
robot@ubuntu:~/wangqinghe/python/20190823$ python3.5 loop.py
runoob
a
b