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')())

 

posted @ 2018-02-16 15:09  炎之朱雀  阅读(269)  评论(1编辑  收藏  举报