五、字典
字典(dict)
特性
- 以多占存储空间换读取速度
- 存储大量的关联型的数据,查询速度非常快
数据类型的分类
- 可变(不可哈希)的数据类型:
list
dict
set
- 不可变(可哈希)的数据类型:
int
str
bool
tuple
创建
语法:{key1:value, key2:value}
(以键值对的形式存储关联型内容,键名指向对应值)
-
key:键名必须唯一,必须是不可变的数据类型:
int
str
(其他不常用) -
value:任意值,任意的数据类型及对象
例:以三种方式创建字典 {'one': 1, 'two': 2}
d1 = dict((('one', 1), ('two', 2)))
d3 = dict({'one': 1, 'two': 2})
d2 = dict(one=1, two=2)
增删改查
增
- 直接增加:
dict[key] = value
(增加键与值,存在重复键则改值) - 设置默认值:
dict.setdefault(key,value)
(有键则不变,无则加) - 追加字典:
dict.update(字典)
(可追加多个键值对)
删
-
按键名删:
dict.pop(key, 参数)
(可返回删除值,无此键会报错,设置参数则返回参数,参数可自定义) -
删除键:
del dict[key]
(无此键会报错,不建议) -
清空:
dict.clear()
改 dict[key] = value
(有此键则改动,无此键则增加)
查
-
获取键的值:
dict.get(key, 参数)
(无此键返回None,设置参数则返回参数,返回参数可自定义) -
以键去查询:
dict[key]
(没有则报错,不建议)
循环注意:循环字典时不可以改变它本身的大小,强制报错
# 转特殊格式再转列表,循环主体为列表改变字典
for key in list(dic.keys()):
# 循环放入新列表再循环新列表改变字典
l = []
for i in dic:
if 'k' in i:
l.append(i)
for key in l:
# 置换法:将满足的条件放入新字典
d = {}
for i in dic:
if 'k' not in i:
d[i] = dic[i]
dic = d
特殊格式
- 获取字典的键:
dict.keys()
- 获取字典的值:
dict.values()
- 获取字典的键值对:
dict.items()
d = {'a1': 1, 'a2': 2}
d.keys() # dict_keys(['a1', 'a2''])
使用方法:
- 转换列表:
list(d.keys)
(将所有键名转化为一个列表) - for循环:
for i in d.keys():print(i)
(循环输出键名)
拆包
定义多个变量对应同等数量的元素
a,b = 1,2
print(a, b) # 1 2
a,b = ('你好', '世界')
print(a, b) # 你好 世界
嵌套
列表的索引为键名数字,字典的索引为键名
dic = {'name':[2, {'age:18'}]}
dic['children'][1]['age'] # 18
fromkeys()
创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的值
语法:dict.fromkeys(seq, value)
- seq:字典的键序列
- value:设置键序列对应的值,默认为 None,可指定值
seq = ('a1', 'a2', 'a3')
d = d.fromkeys(seq)
print(d) # {'a1': None, 'a2': None, 'a3': None}
d = d.fromkeys(seq, 66)
print(d) # {'a1': 66, 'a2': 66, 'a3': 66}
d = d.fromkeys(seq, [1,2])
print(d) # {'a1': [1, 2], 'a2': [1, 2], 'a3': [1, 2]}
d['a2'].append(3)
print(d) # {'a1': [1, 2, 3], 'a2': [1, 2, 3], 'a3': [1, 2, 3]}
© 版权声明
文章版权归作者所有,未经允许请勿转载。
文章版权归作者所有,未经允许请勿转载。
THE END