一、字典的定义
1、使用花括号
d0 = {}
2、 使用dict()表示
d1 = dict(name="Mary", age=20)
print(type(d0), type(d1))
print(d1)
# <class 'dict'> <class 'dict'>
# {'name': 'Mary', 'age': 20}
二、键与值
1、字典由键值对构成 ,即key-value
2、键和值之间用冒号隔开,即key: value
3、键值对之间用逗号隔开,每个键值对后面都有逗号,且换行,即key: value,
d3 = {
"name": "Mary",
"age": 20,
"addr": "City",
"num": range(10),
}
print(d3)
# {'name': 'Mary', 'age': 20, 'addr': 'City', 'num': range(0, 10)}
三、字典是可变的数据类型
1、空字典的类型表示假。(假: False,{},[],None,"",0)
2、字典的值(value)可以是任意数据类型
d4 = {
"key1": None,
'key2': True,
'key3': range(10),
'key4': [1, 3, 5, 8],
'key5': {
'key51': {
'key511': "key5中的key51中的key511",
'key512': "key5中的key51中的key512"
},
'key52': ["key52中的列表"]
}
}
3、 字典中的键的类型
绝大多数都是字符串的类型;不可变数据类型也可以作为键,包括五种基本数据类型、元组。
d5 = {
None: "None可以作为键",
True: "True可作为键",
bool: "bool类型",
200: "int型",
3.14: "float型",
(2,): "不可变类型-元组类型",
# 列表和值不可以作为键的类型
# 键不可以重复,值可以重复
True: "重名的键,其中的值被后面的值覆盖",
"replace": "wait"
}
注意:字典是可变的数据类型,即字典不可以作为键。
四、字典中的使用方法
(一)、获取与修改
字典的访问
print(d5[bool])
# bool类型
根据键进行修改
若访问的键值存在覆盖即可,没有则加入到字典中。
# 更改设置键,如果存在则覆盖
d5[bool] = "bool类型可以作为键"
# 原来没有则加入
d5["new"] = "新加的键值"
print(d5)
# {None: 'None可以作为键', True: '重名的键,其中的值被后面的值覆盖',
# <class 'bool'>: 'bool类型可以作为键', 200: 'int型', 3.14: 'float型',
# (2,): '不可变类型-元组类型', 'replace': 'wait', 'new': '新加的键值'}
(二)、字典的遍历
1、方法一:获取键,根据键取值
for key in d5.keys():
print(key, d5[key])
2、 方法二:获取值,无法对应键
for value in d5.values():
print(value)
3、 方法三:获取键值,得到的是元组,将元组中的两个元素分别赋予key,value
for key, value in d5.items():
print(key, value)
for item in d5.items():
# 分别取到元组中的第一个与第二个内容,item的类型为元组
print(item[0], item[1], type(item))
(三)、字典的操作
1、遍历
(1)、keys():遍历所有的键
# 找到所有的键key
print(d5.keys())
(2)、values():遍历所有的值
print(d5.values())
(3)、items():遍历键值对
print(d5.items())
2、删除
(1)、value = pop(key):根据写入的key返回value
r = d5.pop(True)
print(r)
(2)、key, value =popitem():默认删除最后一个,不可写入参数,即后进先出
print(d5.popitem())
(3)、clear():清空字典无返回值
print(d5.clear())
3、修改
(1)、update({ }):修改添加键值对,没有返回值;一般添加字典类型
若修改的键在字典中,则覆盖原来的内容;若要修改的键不在字典中则在字典中添加键值对。
d5.update({
"update1": "update1若原有列表没有则添加进去",
"replace": "若原有列表有,则覆盖原有内容"
})
(2)、dict.fromekeys(keys, value):由dict类初始化一个新字典
前一个参数是可迭代的,作为key,后一个参数作为所有key的value。
print(dict.fromkeys(range(10), "ok"))
(3)、setdefault(key, value):根据key查找value,原来有则返回原来的值,原来没有加入字典中。
a = d5.setdefault(200, 500)
# 原来没有的加入字典中
r = d5.setdefault("sex","setdefault方法可更新原来没有的值")
print(a, r)
print(d5)
4、取值
(1)、get:查找取值
原来字典中存在返回键对应的值;原来没有返回None;不添加在原有字典中。
print(d5.get(bool))
print(d5.get(500))
print(d5.get(300, "okk"))
print(d5)
# bool类型
# None
# okk
5、求长度
# len 求键值对长度
print(len(d5))
6、in判断键是否在字典中
for key in d5:
print(key)