一. 字典的简单介绍

     字典(dict)是python中唯一的一个映射类型.他是以{ }括起来的键值对组成. 在dict中key是 唯一的. 在保存的时候, 根据key来计算出一个内存地址. 然后将key-value保存在这个地址中. 这种算法被称为hash算法

  已知的可哈希(不可变)的数据类型: int, str, tuple, bool

  不可哈希(可变)的数据类型: list, dict, set 

语法 :   

  {key1: value1, key2: value2….} 

注意: key必须是不可变(可哈希)的. value没有要求.可以保存任意类型的数据

dict保存的数据不是按照我们添加进去的顺序保存的. 是按照hash表的顺序保存的. 而hash表不是连续的. 所以不能进行切片工作. 它只能通过key来获取dict中的数据 

二. 字典的增删改查和其他相关操作

1. 增加

# 增加
#如果dict中没有这个key,就会新增一个key_value的组合进dict
dic = {\'name\':\'武松\'}
dic[\'行者\'] = \'武松\'      
print(dic)
dic.setdefault(\'九纹龙\',\'\')
print(dic)

2. 删除

# 删除
dic = {\'及时雨\':\'宋江\',\'玉麒麟\':\'卢俊义\',\'智多星\':\'吴用\'}
ret = dic.pop(\'及时雨\') #如果dic没有这个key,则报错.反之,返回被删value
print(dic)
print(ret)
del dic[\'玉麒麟\']

#随机删除
ret = dic.popitem() 

#清空字典所有内容
dic.clear()   
print(dic)

3. 修改

#修改
dic = {\'及时雨\':\'宋江\',\'玉麒麟\':\'卢俊义\',\'智多星\':\'吴用\'}
dic1 = {\'及时雨\':\'宋江\',\'玉麒麟\':\'杨雄\',\'智多星\':\'吴用\'}
dic.update(dic1)
# 把dic1中的内容更新到dic中. 如果key重名. 则修改替换. 如果不存 在key, 则新增.
dic = {\'age\':18,\'name\':\'jiam\',\'money\':10000}
dic[\'age\'] = dic[\'age\'] - 1 #通过key来进行修改
print(dic)

4. 查询 

   查询⼀一般⽤用key来查找具体的数据. 

#查询
dic = {\'age\':18,\'name\':\'jiam\',\'money\':10000}
print(dic[\'name\'])
print(dic[\'hobby\']) #通过key进行查询,如果key不存在,则报错
print(dic.get(\'hobby\')) #key不存在,返回默认值None,也可新设置默认值

# 1. 首先判断原来字典有没有这个key。如果没有,执行新增.
# 2.  用这个key去字典中查询,返回查到的结果
dic.setdefault(\'hobby\',\'篮球\')
ret = dic.setdefault(\'name\')
print(ret)
print(dic)

5. 其他相关操作

# 解构,解包
a,b = (1,2)
print(b)
dic = {\'及时雨\':\'宋江\',\'玉麒麟\':\'卢俊义\',\'智多星\':\'吴用\'}
print(dic.keys())       #打印所有的key
print(dic.values())     #打印所有的value
print(dic.items())      
for a,b  in dic.items():
    print(a)


 for a in dic:
     print(a)#直接循环,打印的是key
     print(dic[a])

 

#修改
dic = {\'及时雨\':\'宋江\',\'玉麒麟\':\'卢俊义\',\'智多星\':\'吴用\'}

dic1 = {\'及时雨\':\'宋江\',\'玉麒麟\':\'杨雄\',\'智多星\':\'吴用\'}
# 把dic1中的内容更新到dic中. 如果key重名. 则修改替换. 如果不存 在key, 则新增.
dic = {\'age\':18,\'name\':\'jiam\',\'money\':10000}

dic[\'age\'] = dic[\'age\'] - 1 #通过key来进行修改
print(dic)

版权声明:本文为jiujiang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jiujiang/p/11091319.html