博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python全栈之路系列之字典数据类型
阅读量:5797 次
发布时间:2019-06-18

本文共 3905 字,大约阅读时间需要 13 分钟。

字典(dict)在基本的数据类型中使用频率也是相当高的,而且它的访问方式是通过键来获取到对应的值,当然存储的方式也是键值对了,属于可变类型。

创建字典的两种方式

第一种

>>> dic = {"k1":"123","k2":"456"}>>> dic{'k1': '123', 'k2': '456'}>>> type(dic)

第二种

>>> dic = dict({"k1":"123","k2":"456"})>>> dic{'k1': '123', 'k2': '456'}>>> type(dic)

在创建字典的时候,__init__初始化的时候还可以接受一个可迭代的变量作为值

>>> li = ["a","b","c"]>>> dic = dict(enumerate(li))>>> dic{0: 'a', 1: 'b', 2: 'c'}

默认dict再添加元素的时候会把li列表中的元素for循环一边,添加的时候列表中的内容是字典的值,而键默认是没有的,可以通过enumerate方法给他加一个序列,也就是键。

与其变量不同的是,字典的键不仅仅支持字符串,而且还支持其他数据类型,譬如:

# 数字>>> D = {1:3}>>> D[1]3# 元组>>> D = {(1,2,3):3}>>> D[(1,2,3)]3

字典解析

>>> D = {x: x*2 for x in range(10)}>>> D{0: 0, 1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18}# 可以使用zip>>> D = {k:v for (k, v) in zip(['a','b','c'],[1,2,3])}>>> D{'a': 1, 'c': 3, 'b': 2}

字典所提供的常用方法

删除字典中的所有元素

clear(self):

>>> person = dict({"name": "ansheng", 'age': 18})>>> person{'age': 18, 'name': 'ansheng'}>>> person.clear()# 清空字典的内容之后字典会变成一个空字典>>> person{}

返回一个字典的浅复制

copy(self):

>>> person = dict({"name": "ansheng", 'age': 18})>>> person.copy(){'age': 18, 'name': 'ansheng'}

创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值

fromkeys(S, v=None):

属性 描述
S 字典键值列表
v 可选参数, 设置键序列(seq)的值
>>> seq = ('name', 'age', 'sex')>>> dict = dict.fromkeys(seq)>>> dict{'age': None, 'name': None, 'sex': None}

fromkeys方法就是把一个字典的key更新到另外一个字典中,默认的值可以设置

>>> dic={"k1":123,"k2":456,"k4":111}>>> dic{'k1': 123, 'k4': 111, 'k2': 456}# 创建一个新的字典,默认值是`123`>>> dic.fromkeys(["k1","k2","k3"],"123"){'k1': '123', 'k3': '123', 'k2': '123'}

返回指定键的值,如果值不在字典中返回默认值

get(self, k, d=None):

属性 描述
key 字典中要查找的键
default 如果指定键的值不存在时,返回该默认值值
>>> person = {"name": "ansheng", 'age': 18}>>> person.get("name")'ansheng'

成员运算符in可以判断键是否存在于字典中,如果键在字典dict里返回true,否则返回false

>>> person = {"name": "mr", 'age': 18}>>> 'name' in personTrue>>> 'aname' in personFalse

以列表返回可遍历的(键, 值)元组数组

items(self):

>>> person = {"name": "mr.wu", 'age': 18}# 以元组的方式输出出来>>> person.items()[('age', 18), ('name', 'mr.wu')]

以迭代器的方式返回字典的键和值

iteritems(self):

>>> person.iteritems()

迭代key

iterkeys(self):

>>> person = {"name": "ansheng", 'age': 18}>>> person.iterkeys()

迭代value

itervalues(self):

>>> person = {"name": "ansheng", 'age': 18}>>> person.itervalues()

以列表的形式返回一个字典所有的键

keys(self):

>>> person = {"name": "ansheng", 'age': 18}>>> person.keys()['age', 'name']

删除指定给定键所对应的值,返回这个值并从字典中把它移除

pop(self, k, d=None):

>>> person = {"name": "ansheng", 'age': 18}>>> person{'age': 18, 'name': 'ansheng'}# 返回删除键对应的值>>> person.pop("age")18>>> person{'name': 'ansheng'}

随机返回并删除字典中的一对键和值,因为字典是无序的,没有所谓的"最后一项"或是其它顺序。

popitem(self):

>>> person = {"name": "ansheng", 'age': 18}# 随即删除并显示所删除的键和值>>> person.popitem()('age', 18)>>> person{'name': 'ansheng'}

如果key不存在,则创建,如果存在,则返回已存在的值且不修改

setdefault(self, k, d=None):

属性 描述
key 查找的键值
default 键不存在时,设置的默认键值
>>> person = {"name": "ansheng", 'age': 18}# 如果字典中有这个键,那么就输出这个键的值>>> person.setdefault("name")'ansheng'# 如果没有则不输出,但是会创建一个键,值为默认的'None',值是可以指定的>>> person.setdefault("sex")>>> person{'age': 18, 'name': 'ansheng', 'sex': None}

把字典dic2的键/值对更新到dic1里

update(self, E=None, **F):

>>> dic1 = {"name":"ansheng"}>>> dic2 = {"age":"18"}>>> dic1{'name': 'ansheng'}>>> dic2{'age': '18'}>>> dic1.update(dic2)>>> dic1{'age': '18', 'name': 'ansheng'}

显示字典中所有的值

values(self):

>>> person = {"name": "ansheng", 'age': 18}>>> person.values()[18, 'ansheng']

所有项,只是将内容保存至view对象中

viewitems(self):

>>> person = {"name": "ansheng", 'age': 18}>>> person.viewitems()dict_items([('age', 18), ('name', 'ansheng')])

viewkeys(self):

>>> person = {"name": "ansheng", 'age': 18}>>> person.viewkeys()dict_keys(['age', 'name'])

viewvalues(self):

>>> person = {"name": "ansheng", 'age': 18}>>> person.viewvalues()dict_values([18, 'ansheng'])

对字典的键进行排序,其原理就是把key转换为列表,然后使用sort对列表排序,最后根据列表循环字典中的值

>>> D = {'a':1,'b':2,'c':3}>>> D{'a': 1, 'c': 3, 'b': 2}>>> Ks = list(D.keys())>>> Ks['a', 'c', 'b']>>> Ks.sort()>>> Ks['a', 'b', 'c']>>> for k in Ks: print(k, D[k])... a 1b 2c 3

转载地址:http://ctsfx.baihongyu.com/

你可能感兴趣的文章
游戏名词解释
查看>>
mongodb数据的导出和导入
查看>>
白话算法(7) 生成全排列的几种思路(二) 康托展开
查看>>
d3 v4实现饼状图,折线标注
查看>>
微软的云策略
查看>>
Valid Parentheses
查看>>
【ES6】数值的扩展
查看>>
性能测试之稳定性测试
查看>>
ES6的 Iterator 遍历器
查看>>
2019届高二(下)半期考试题(文科)
查看>>
【REDO】删除REDO LOG重做日志组后需要手工删除对应的日志文件(转)
查看>>
nginx 301跳转到带www域名方法rewrite(转)
查看>>
AIX 配置vncserver
查看>>
windows下Python 3.x图形图像处理库PIL的安装
查看>>
【IL】IL生成exe的方法
查看>>
network
查看>>
SettingsNotePad++
查看>>
centos7安装cacti-1.0
查看>>
3个概念,入门 Vue 组件开发
查看>>
没有JS的前端:体积更小、速度更快!
查看>>