Python字典(dict)

Python字典(dict)

前言

除了基础数据:整型,浮点型与字符串外,我们学习在其他数据类型的时候,其实往往都是这些数据类型的组合
也就是复合类型的数据.
通常我们要学习这些数据的逻辑是:

  1. 新建
  2. 增加元素
  3. 删除元素
  4. 改变元素
  5. 查找元素
    即:通常所说的增,删,改,查

新建一个字典:

方法一:

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)
上一篇:oracle日期处理


下一篇:Redis缓存系列--(六)缓存和数据库一致性更新原则