dict字典
--------------以下部分摘自While老师的教学资料
字典:
字典一个元素呈键值对的形式,以逗号分割,以大括号包围的无序的,可以修改的序列。
字典是python基础数据类型当中唯一一个映射关系的数据类型通常对应JSON
定义:
Zip函数:将几个序列对应索引位上的元素分到一个元组当中,形成一个列表,子元组的个数取决于最短序列的长度
由于字典无序,所以我们定义字典和字典生成之后的元素的顺序是不同的
dict
{}
Fromkeys 以后面的序列的元素为键,默认值为None的字典
字典的特点:
因为字典是无序的,所以字典没有索引值,
因为字典没有索引值,所以字典以键取值,(字典的键相当于列表的索引)
因为字典以键取值,所以字典的键唯一且不可修改,
因为字典的键不可修改,所以列表和字典不可以给字典做键。
字典的方法
字典的取值 |
keys |
获取字典所有的键 |
values |
获取字典所有的值 |
|
get |
以键取值,如果指定键不存在,默认返回None,可以指定返回内容 |
|
update |
更新指定键的内容,如果键不存在,创建 |
|
setdefault |
设置默认,如果键存在,返回值,如果键不存在,创造键,值默认为None,值也可以自定义 |
|
items |
返回字典键值呈元组形式的格式 |
字典的删除 |
pop |
弹出,返回并删除指定键对应的值 |
popitem |
随机弹出一个键值元组,这里随机的原因是因为字典无序 |
|
clear |
清空字典 |
|
字典的判断 |
has_key |
判断指定的键是否在字典当中,即将被废除,之后我们用in |
视图模式 |
viewitems |
视图模式的主要特征是与字典保持同步,在我们python基础部分不做深入研究 |
viewkeys |
||
viewvalues |
||
迭代模式 |
Iteritems |
在python2.4版本之后,为了提高python运行效率python提出了迭代器、生成器、装饰器的定义,而字典的迭代模式正式去用了迭代器原理, 当我们直接调用的时候,我们只能得到一个内存地址,当我们具体想要取值的时候,需要借助next方法 |
Iterkeys |
||
itervalues |
copy 浅拷贝,进行浅拷贝
在python当中,浅拷贝指的是拷贝对象和被拷贝对象的嵌套部分指向统一的内存。
|
str |
list |
tuple |
dict |
是否有序 |
是 |
是 |
是 |
否 |
是否可修改 |
不 |
可 |
不 |
可 |
方法多少 |
很多 |
一般 |
很少 |
较多 映射关系 |
d = {} print(type(d)) emp = ['Tom', 20, 3900.00] print(emp[0]) employee = {"name": "Tom", "age": 20, "salary": 3900.00} # 字典里的:隔开了键与值,然后用,隔开其他的键值对 print(employee) book = dict(title="pyrhon入门", author="Tom", price=59.00) # 字典也可以用函数方式声明,但是参数要以=形式传参,键也会以字符串形式出现 print(book) lit = [("name", "Tom"), ("age", 20)] # 有规律的列表也可以转换为字典 emp2 = dict(lit) print(emp2) keys = ["name", "age", "job"] emp3 = dict.fromkeys(keys) # .fromkeys是一个方法,可以向变量传入一个列表,,列表里的每一个元素作为字典表的一个键,如果没有赋值,则以None形式表现出来 print(emp3)
emp = dict(name="Tom", age=20, department="技术部", salary=8900.00) book={'title': 'python入门经典', 'author': '优品课堂', 'price': 59.00, 'publisher': {'title': '清华大学出版社', 'address': '北京'}} print('name' in emp) print('price' in book) print(book['title']) # 可以通过键名访问 print(book['publisher']['address']) print(book.get('title')) # 可以通过.get方法访问字典表 print(book.get('Title')) # 如果木有对应键,则返回None print(book.get('Title', '未找到')) # 可以规定返回的值代替None print(book.keys()) # 可以用.keys方法返回所有的键 keys = book.keys() print(type(keys)) # 得到的是一个视图 keys = list(keys) print(type(keys)) for key in book.keys(): print(key) print(book.values()) for V in book.values(): print(V) values = list(book.values()) print(values) print(type(values)) print(book.items()) # .tiems得到所有的项,得到的是视图 items = list(book.items()) print(items) for (k, v) in book.items(): print('{}-->{}'.format(k, v)) print(len(book.keys())) print(len(book.values()))
coures = {'title': 'python零基础入门精讲', 'lecturer': 'Eason', 'org': '腾讯课堂'} c = coures.copy() print(c) print(c.clear()) coures['lecturer'] = 'Arthur.Wang' print(coures) c1 = {'price': 19.00} coures.update(c1) # 用.update更新内容,增加/合并新的内容 print(coures) del c1['price'] print(c1) c = coures print(c.pop('price')) title = c.pop('title') print(title) print(c) print(c.pop('Org', '未找到')) print(c.popitem()) print(c) def say_Hello(): print("hello world") print(say_Hello()) person = {'name': "Tom", "hello": say_Hello} print(person['name']) print(person.get('name')) print(person['hello']) print(person['hello']()) print(person.get('hello')())