Python常用数据类型操作------字典

Python常用数据类型操作------字典

一、字典的基本概念

字典是无序的,可变的键值对集合。

person = {"name": "sz", "age": 15}
print(person, type(person)) # {'name': 'sz', 'age': 15} <class 'dict'>
print(person["name"]) # sz
print(person["age"]) # 15
d = dict.fromkeys("abc")  
print(d)   # {'a': None, 'b': None, 'c': None} 没有默认值生成的是None

d = dict.fromkeys("abc",666)
print(d)  # {'a': 666, 'b': 666, 'c': 666}

当字典中出现重复的的键时,后面的值会将前面的值覆盖掉

d = {1: "a", 2: "b", 1: "c"}
print(d)  # 后面1的值,会把前面的覆盖掉  {1: 'c', 2: 'b'}

key值必须是任意不可变类型

二、字典的常用操作

2.1 增

格式: dic[key] = value

当key在原字典中不存在时,即为新增操作

d = {"name": "sz", "age": 15}
d["height"] = 180
print(d)  # {'name': 'sz', 'age': 15, 'height': 180}

2.2 删

方式一

格式:del dic[key] key 必须存在,如果不存在就会报错KeyError

d = {'name': 'sz', 'age': 15, 'height': 180}
del d["age"]
print(d)  # {'name': 'sz', 'height': 180}

方式二

格式:dic.pop(key[,default])

删除指定的键值对,并返回对应的值,如果key不存在, 那么直接返回给定的default值,如果没有给定默认值,则报错。

d = {'name': 'sz', 'age': 15, 'height': 180}
v = d.pop("age")
print(v,d)  # 15 {'name': 'sz', 'height': 180}
    
v = d.pop("age1") # 没有默认值
print(v,d)   # 报错

v = d.pop("age1",666)  # 有默认值
print(v,d) # 666 {'name': 'sz', 'age': 15, 'height': 180} 有默认值,直接返回给定的默认值,没有默认值,则直接报错

方式三

格式: dic.popitem()

删除最后一个键值对, 并以元组的形式返回该键值对,如果字典为空, 则报错。

d = {"name": "sz", "age": 15, "zag" : 55}
result = d.popitem()
print(result, d) # 以元组('zag', 25)的形式返回。 {'name': 'sz', "age": 15}

方式四

格式:dic.clear()

删除字典内所有键值对返回None

注意, 字典对象本身还存在, 只不过内容被清空,注意和del的区别

d = {"name": "sz", "age": 15, "zag" : 55}
print(d.clear())   # None
print(d)  # {}

del d
print(d)  # 报错,因为已经没有这块空间了,全部都删除了

2.3 改

字典中修改只能修改值,不能修改key

修改单个键值对

格式:dic[key] = value

直接修改,如果key不存在, 则新增, 存在则修改

d = {"name": "sz", "age": 15, "zag" : 55}
d["age"] = 20
print(d)  # {'name': 'sz', 'age': 20, 'zag': 55}

批量修改键值对

格式:oldDic.update(newDic)

根据新的字典,批量更新旧的字典中的键值对,如果旧字典没有对应的key, 则新增键值对

d = {"name": "sz", "age": 15, "zag" : 55}
d.update({"age":666, "address":"哈尔滨"})
print(d) # {'name': 'sz', 'age': 666, 'zag': 55, 'address': '哈尔滨'}

2.4 查询操作

2.4.1获取单个值

方式一

格式: dic[key], 不存在, 会报错

d = {"name": "sz", "age": 15, "zag" : 55}
print(d["age"]) # 15

方式二

格式:dic.get(key[,default])

如果不存在对应的key, 则取给定的默认值default,如果没有默认值, 则为None,但不会报错,但是, 原字典不会新增这个键值对

d = {"name": "sz", "age": 15, "zag" : 55}
v = d.get("age")
print(v)  # 15
v = d.get("age1")
print(v)  # None
v = d.get("age1", 666)
print(v) # 666
print(d) # {'name': 'sz', 'age': 15, 'zag': 55}  字典本身没有发生任何变化

方式三

格式:dic.setdefault(key[,default])

如果key不存在, 则设置给定默认值, 并返回该值,如果默认值没给定,则使用None代替

d = {"name": "sz", "age": 15, "zag" : 55}
v = d.setdefault("age1")
print(v) # None
print(d) # {'name': 'sz', 'age': 15, 'zag': 55, 'age1': None}  字典本身发生了变化
2.4.2 获取所有值

格式: dic.values()

d = {"name": "sz", "age": 15, "zag" : 55}
print(d.values()) # dict_values(['sz', 15, 55])
2.4.3 获取所有的键

格式:dic.keys()

d = {"name": "sz", "age": 15, "zag" : 55}
print(d.keys()) # dict_keys(['name', 'age', 'zag'])
2.4.4 获取所有字典的键值对

格式:dic.items()

d = {"name": "sz", "age": 15, "zag" : 55}
print(d.items()) #dict_items([('name', 'sz'), ('age', 15), ('zag', 55)])

2.5 遍历

方式一

先遍历所有的key, 然后, 根据指定的key, 获取到对应的值

# 1. 先获取所有的key
d = {"name": "sz", "age": 15, "zag" : 55}
keys = d.keys()
# 2. 遍历所有的key
for key in keys:
    print(key)
    print(d[key])
#结果:
    # name sz
    # age 15
    # zag 55

方式二

直接遍历所有的键值对

# 1. 获取所有的键值对

d = {"name": "sz", "age": 15, "zag" : 55}
kvs = d.items()
print(kvs)
# [('name', 'sz'), ('age', 15), ('zag', 55)]

# 2. 直接遍历

for k, v in kvs:
    print(k, v)
# 结果:
    # name sz
    # age 15
    # zag 55

2.6 计算

格式:len(info) 输出键值对的个数

d = {"name": "sz", "age": 15, "zag" : 55}
print(len(d)) # 3

2.7 判定操作

格式:x in dic 判定dic中的key, 是否存在x

x not in dic 判定dic中的key, 是否不存在x

d = {"name": "sz", "age": 15, "zag" : 55}
print("name" in d)   # True

print("name" not in d) # false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值