1.字典的基本概念
2.字典的定义
- 方式1:{key:value,key:value,…}
- 方式2:fromkeys(S,v=None)
- 静态方法:类和对象都可以调用
- 类调用:dict.fromkeys(“abc”,666) 输出:{‘a’:666,‘b’:666,‘c’:666}
- 对象调用:dic.fromkeys(“abc”,666)输出:{‘a’:666,‘b’:666,‘c’:666} 此处的dic,是实例化的字典对象
- 注意
- key不能重复 当重复时后面会把前面的值覆盖
- key必须是任意不可变类型
- 可变类型:列表,字典,可变集合
- 不可变类型:数值,布尔,字符串,元组
- key必须是任意不可变类型的原因
- python的字典,采用哈希表的方式实现
- 哈希表是一个列表把key—value按某种转换方式,key转换成索引 value转换成值存入表内
- 字典的存在意义
- 可以通过key,访问对应的值,使得这种访问变得更具有意义
- 查询效率得到很大提升
person = {"name":"sz","age":18}
print(person["name"])
print(person["age"])
d = dict.fromkeys("abc")
print(d)
c = dict.fromkeys("abc",666)
print(c)
d = dict.fromkeys([1,2,3],666)
print(d)
e = {1:2,2:2}.fromkeys([1,2],666)
print(e)
3.字典的常用操作
3.1 字典的增加操作
- dic[key] = value
- 当key在原字典中不存在时,即为新增操作
person = {"name":"sz","age":18}
person["性别"] = "男"
print(person)
3.2 字典的删除操作
- del dic[key]
- dic.pop(key,default(可省略))
- 删除指定的键值对,并返回对应的值
- 如果key,不存在,那么直接返回给定的default的值,不做删除操作,如果没有给定值,就会报错
- dic.popitem()
- 删除最后的键值对,并以元组的形式返回该键值对,如果字典为空,则报错
- dic.clear()
person = {"name":"sz","age":18,"height":185}
del person["name"]
print(person)
del person["name1"]
person = {"name":"sz","age":18,"height":185}
v = person.pop("name")
print(v)
print(person)
v = person.pop("name1",0)
print(v)
print(person)
v = person.pop("name1")
person = {"name":"sz","age":18,"height":185}
result = person.popitem()
print(person)
print(result)
person = {"name":"sz","age":18,"height":185}
person.clear()print(person)
3.3 字典的修改操作
- 只能改值,不能改key
- 修改单个键值对
- 批量修改键值对
person = {"name":"sz","age":18,"height":185}
person["height"] = 186
print(person)
person = {"name":"sz","age":18,"height":185}
person.update({"age":23,"address":"北京","phone":"153555"})
print(person)
3.4 字典查询操作
- 获取单个值
- dic[key]
- dic.get(key,default)
- 如果不存在对应的key,则取给定的默认值default
- 如果没有默认值,则为None ,不会报错
- dic.setdefault(key,default)
- 获取指定key对应的值,如果key不存在,则会在字典中设置对应的key并赋值为default,并返回该值,如果默认值没有给定,则使用None代替
- 获取所有的值
- 获取所有的键
- 获取字典的键值对
- 遍历
- for in
- for x,y in info.items
person = {"name":"sz","age":18,"height":185}
print(person["name"])
print(person["name1"])
person = {"name":"sz","age":18,"height":185}
print(person.get("name"))
print(person.get("name1"))
print(person.get("name1",0))
person = {"name":"sz","age":18,"height":185}
print(person.setdefault("name"))
print(person.setdefault("name1"))
print(person)
print(person.setdefault("name2",0))
print(person)
person = {"name":"sz","age":18,"height":185}
print(person.values())
person = {"name":"sz","age":18,"height":185}
print(person.keys())
person = {"name":"sz","age":18,"height":185}
print(person.items())
person = {"name":"sz","age":18,"height":185}
keys = person.keys()
for key in keys:
print(key)
print(person[key])
kvs = person.items()
for x,y in kvs:
print(x)
print(y)
"""
name
sz
age
18
height
185
"""
3.5 字典的计算
person = {"name":"sz","age":18,"height":185}
print(len(person))
3.6 字典的判定
- x in dic
- x not in dic
- dic.has_key(key) 已经过期,建议使用in来代替
person = {"name":"sz","age":18,"height":185}
print("age" in person)
print("address" in person)