Python字典(dict)
前言
除了基础数据:整型,浮点型与字符串外,我们学习在其他数据类型的时候,其实往往都是这些数据类型的组合
也就是复合类型的数据.
通常我们要学习这些数据的逻辑是:
- 新建
- 增加元素
- 删除元素
- 改变元素
- 查找元素
即:通常所说的增,删,改,查
新建一个字典:
方法一:
d1 = {} # 定义一个空字典
方法二:
d2 = dict() #定义一个空字典
d2 = dict(name = "Tome", age = 13, address = "Beijing") # 创建一个含有三个键值对的字典
方法三:
d3 = {"name": "Tom", "age": 13} # 用键值对来定义字典. name是key , Tom为value 合称键值对, age是key, 13是value. 同样合称键值对
增加元素
方法一:
d1["address"] = "Beijing"
方法二:
d4 = {"address": "Beijing"}
d2.update(d4)
update()方法将另一个字典的内容加入字典中.
如果新加入的键在原字典中已经存在,会将原字的内容用加入的字典内容更新
删除元素
方法一:
del d1["address"]
注意:如果要删除的key不在字典内,用此方法会报错.
因此要注意操作的逻辑,可以先判断一下key存不存在
方法二:
d1.pop("address") # 如果键存在,此方法会返回address对应的值,如果键不存在,会报错哦^_^
d1.pop("address", "nokey") # 如果键存在,此方法会返回address对应的值,如果键不存在,会返回第二个参数的值
注意:在使用pop方法删除字典的键值对的时候建议使用第二种方法
方法三:
d1.popitem() # 删除最后一对键值对
注意:如果是空字典调用此方法会报错
方法四:
d1.clear() # 清空字典
修改
方法一:
d2["address"] = "Shanghai" # 将原来的地址Beijing 改为Shanghai. 即如果键不存在,就新增,如果存在,就修改
方法二:
d2.update({"address":"Shanghai"}) # 将原来的地址Beijing 改为Shanghai. 即如果键不存在,就新增,如果存在,就修改
查字典
根据键查值
方法一: dict[“key”]
a = d1["address"] # 如果键不存在会报错
方法二:dict.get(key,[default])
b = d1.get("address") # 如果键存在,返回对应值 ,如果不存在,报错
c = d1.get("tel", "NoneTel") # 如果键存在,返回对应值,如果不存在,返厍第二个参数的值(default)的值
方法三.dict.setdefault(key,default=None)
a = d1.setdefault("address") # a 的值为Beijing
b = d1.setdefault("tel") # b的值为None
c = d1.setdefault("tel", "13888888888") # c = "13888888888"
注意:
setdefault()有两个参数,第一个参数为必须参数,第二个参数为默认值参数
当只给一个参数时,如果键存在于字典中,就返回对应值,如果不存在就返回None,并将这个键加入字典,值为None
如果给了第二个参数,如果键存在于字典中,就返回对应值,如果不存在就第二个参数值,并将这外键加入字典,值为第二个参数
查找所有键
dict.keys() 返回所有键组成的列表
a = d1.keys()
查找所有值
dict.values() 返回所有字典中的值组成的列表.
a = d1.values()
获取所有键值对
dict.items()
a = d1.items()
查找键在不在字典中
dict.has_key(key) # 查询key在不在字典中,如果在,返回True,否则返回False
b = d1.has_key("address")
注意这个方法与get()的方法区别,get()方法并不能明确知晓键存不存在,因为,有可能键是存在的,但恰好与设定的default的值一样,如果直接判断返回值是default的值,就确定不存在,就会出现失误的情况
字典(dict)的遍历
正常遍历
for item in d1:
print(item)
print(d1[item])
这样遍历等效于:
for key in d1.keys():
print(key)
print(d1[key])
值遍历
for value in d1.values():
print(value)
键值遍历
for key, value in d1.items():
print(key,vlaue)