04 字典表 dict

一、字典表的声明

1.字典表的本质是一个hash table,是一个映射类型,并且是无顺序的;
2.字典的键值是不可以改变的类型:字符串、元组;

1.使用{}来定义字典表

>>> book ={'title':'python入门经典','ISBN':'AABBCC111','price':50}
>>> book
{'title': 'python入门经典', 'ISBN': 'AABBCC111', 'price': 50}

2.使用下标来访问字典表的值

通过方括号,通过key来访问value

book['title']
'python入门经典'
book[0]
Traceback (most recent call last):
  File "<input>", line 1, in <module>
KeyError: 0

3.增加一个键值对

可以通过方括号和值的方式,增加一个键值对,此时是没有顺序的

>>> book['author'] = 'kevin'
>>> book
{'title': 'python入门经典', 'author': 'kevin', 'ISBN': 'AABBCC111', 'price': 50}

4.dict的get()方法

如果不使用get()方法,可以通过字典表的小标方式来获取value,但是如果value不存在的话,就会抛出一个异常。
有的时候,不需要抛出异常,可以用get()方法

>>> book
{'title': 'python入门经典', 'author': 'kevin', 'ISBN': 'AABBCC111', 'price': 50}
>>> book['publicDate']
Traceback (most recent call last):
  File "<input>", line 1, in <module>
KeyError: 'publicDate'
>>> book.get('publicDate','20180101')
'20180101'

5.使用dict()构造函数来创建一个dict

需要注意的是使用dict(),其中key是没有引号的,dict会将其默认为字符串处理

>>> food = dict(water='景田百岁山', vegetable='秋葵', meat='pork')
>>> food
{'vegetable': '秋葵', 'meat': 'pork', 'water': '景田百岁山'}

二、字典表的操作

1.获取字典表的长度,使用全局函数len()

>>> book
{'title': 'python入门经典', 'author': 'kevin', 'ISBN': 'AABBCC111', 'price': 50}
>>> len(book)
4

2.改变字典表的value

2.1可以直接通过索引的方式来改变dict的value值

book['price'] = 99.99
book
{'title': 'python入门经典', 'author': 'kevin', 'ISBN': 'AABBCC111', 'price': 99.99}

2.2通过update()方法来合并两个字典表

>>> book
{'title': 'python入门经典', 'author': 'kevin', 'ISBN': 'AABBCC111', 'price': 99.99}
>>> job
{'name': 'kevin', 'age': 20, 'position': 'dev'}
>>> book.update(job)
>>> book
{'title': 'python入门经典', 'name': 'kevin', 'age': 20, 'author': 'kevin', 'position': 'dev', 'ISBN': 'AABBCC111', 'price': 99.99}

2.3通过.pop()方法弹出键值对

使用pop(键)弹出一个键值对

>>> book
{'pubdate': '20180821', 'author': 'Bill', 'price': 25.0, 'title': 'python入门'}
>>> book.pop('pubdate')
'20180821'
>>> book
{'author': 'Bill', 'price': 25.0, 'title': 'python入门'}

3通过.keys().values()访问dict中的key和value

3.1这里需要注意的是,返回的值是dict_keys()和dict_values(),而不是不是list类型

虽然返回的不是list,但是也可以访问该元素

>>> book
{'author': 'Bill', 'price': 25.0, 'title': 'python入门'}
>>> book.keys()
dict_keys(['author', 'price', 'title'])
>>> type(book.keys())
<class 'dict_keys'>
>>> book.values()
dict_values(['Bill', 25.0, 'python入门'])
>>> type(book.values())
<class 'dict_values'>

遍历keys和values的操作
遍历keys的操作

>>> book
{'author': 'Bill', 'price': 25.0, 'title': 'python入门'}
>>> for k in book.keys():
...     print(k)
...     
author
price
title

遍历values()的操作

>>> for v in book.values():
...     print(v)
...     
Bill
25.0
python入门

3.2将返回的dict_keys()和dict_values()使用list()转成list

>>> list(book.keys())
['author', 'price', 'title']

2.5通过.items()来访问key和value

核心语句是for k,v in book.items():其中注意的是items()

book
{'author': 'Bill', 'price': 25.0, 'title': 'python入门'}
>>> for key,value in book.items():
...     print(key,value,sep=':')
...     
author:Bill
price:25.0
title:python入门

4字典表的排序的三种方法

4.1将键值转换成list,对list排序,输出value(从3.6版本dict已经是有序的了)

这样要求key是一个有序的,先转换成list然后输出value

>>> score = dict(a='1',b='2',c='3',d='4')

# 此时score的字典表是无序的
>>> score
{'c': '3', 'a': '1', 'b': '2', 'd': '4'}

# 先将keys转化成list
>>> listKeys = list(score.keys())

# 将keys进行排序
>>> listKeys.sort()

# 打印key和value
>>> for listKey in listKeys:
...     print(listKey,score.get(listKey),sep=':')
...     
a:1
b:2
c:3
d:4

4.2直接使用sorted()全局函数,推荐使用

sorted()是一个全局的函数,可以作用于任何可迭代的对象,keys()和values()都是可迭代对象

>>> score
{'c': '3', 'a': '1', 'b': '2', 'd': '4'}
>>> ks = score.keys()
>>> for k in sorted(ks):
...     print(k,score.get(k))
...     
a 1
b 2
c 3
d 4

4.3使用第三方包sorteddict

pass,后续接触到了再补充

posted on   飞飞fly  阅读(226)  评论(0编辑  收藏  举报
努力加载评论中...



点击右上角即可分享
微信分享提示