字典的增删查改

Posted hualibokeyuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字典的增删查改相关的知识,希望对你有一定的参考价值。

字典

字典是无序的,不可变数据类型

定义: 用于存储数据,存储大量数据 字典要比列表快,将数据和数据之间进行关联

定义一个字典

dic = "常鑫":10,"李文虎":80,"张宇":90,10:"大黑哥"

字典中逗号分隔是一个元素 "常鑫" (键) : 10 (值) 键值对应

字典的键

  1. 必须是可哈希的—— 不可变的数据类型(列表不可以)——避免哈希冲突,使用了开放寻址法

2.不可哈希———可变的数据类型

3.要求唯一,如果有重复的后面的将前面的值覆盖

  • 字典的值可以任意

    (通过键去查)

    1.暴力添加

dic = "有":[1,2,3]
dic["李文虎"] = 89    结果:'有': [1, 2, 3], '李文虎': 89
  • 李文虎这个键去字典进行查询,如果不存在执行添加,如果存在就不添加了
有:
dic = "有":[1,2,3],"李文虎":89
dic.setdefault("李文虎",100)     结果:  dic = "有":[1,2,3],"李文虎":89

没有:
dic = "有":[1,2,3],
dic.setdefault("李文虎",100)     结果:'有': [1, 2, 3], '李文虎': 100
  1. dic.setdefault()
dic = "有":[1,2,3],"李文虎":89
 print(dic.setdefault("李文虎"))
#结果 89   

只有两种格式  

还有 None
print(dic.setdefault("张宇")
# None

删除

通过字典 的删除值对

  • del dic["键"]
dic = "有":[1,2,3],"李文虎":89
del dic["有"]
print(dic)

#结果     '李文虎': 89
  • dic.pop("键")

    dic = "有":[1,2,3],"李文虎":89
    dic.pop("有")
    print(dic)
    # 结果  '李文虎': 89

dic.clear

dic = "有":[1,2,3],"李文虎":89
dic.clear()
print(dic)


# 

当键在字典中存在就是修改(暴力修改)

dic = "有":[1,2,3],"李文虎":89
dic["有"] = "dsb"
print(dic)


# '有': 'dsb', '李文虎': 89

字典中没有某个键时就是添加

dic = "有":[1,2,3],"李文虎":89
dic["无"] = "dsb"
print(dic)
# '有': [1, 2, 3], '李文虎': 89, '无': 'dsb'

dic.update("要更新的字典")

括号里的级别高于 update 前面的字典 更新顾名思义就是将补充的填充到原来上面

D = 'one': 1, 'two': 2

D.update('three': 3, 'four': 4)  # 传一个字典
print(D)

D.update([('seven', 7), ('eight', 8)])  # 传一个包含一个或多个元祖的列表
print(D)



#'one': 1, 'two': 2, 'three': 3, 'four': 4
'one': 1, 'two': 2, 'three': 3, 'four': 4, 'seven': 7, 'eight': 8

  1. 利用 for 循环 (循环获取的每个字典中对应的键)

  2. dic = "有":[1,2,3],"李文虎":89
    for i in dic:
        print(i)
    
    #
    有
    李文虎

dic.get()

dic = "有":[1,2,3],"李文虎":89
print(dic.get("李文虎"))          #通过键获取值,存在返回键中对应的值
# 89
dic = "有":[1,2,3],"李文虎":89
print(dic.get("无"))             #不存在返回 None
# None

dic.get[]

存在的话和上面的()一样,如果不存在就会报错

其他操作

dic.keys() 获取所有键,存放在高仿列表中,支持 for 循环,不支持索引.

dic = "有":[1,2,3],"李文虎":89
print(dic.keys())

#  结果:  dict_keys(['有', '李文虎'])

支持 for 循环

dic = "有":[1,2,3],"李文虎":89
for i in dic.keys():
    print(i)

结果:
有
李文虎    类似于输出列表中的元素,  字典也可以

不支持索引 直接报错

dic = "有":[1,2,3],"李文虎":89
print(dic.keys()[0])


结果报错

dic.values() 获取字典中所有的值

dic = "有":[1,2,3],"李文虎":89
print(dic.values())


#dict_values([[1, 2, 3], 89])

dic.items() 获取字典中所有键和值

dic = "有":[1,2,3],"李文虎":89
print(dic.items())


#dict_items([('有', [1, 2, 3]), ('李文虎', 89)])

解构

a,b = 10,12
print(a)
print(b)   #相当于一个元组  
#
10
12
a = 10
b = 20
a,b = b,a
print(a)
print(b)
#
20
10
列表
a, b = [1,2]
print(a)
print(b)

#
1
2
元组
a, b = (1,2)
print(a)
print(b)          #等号前面的值要和等号后面的变量名要一一对应,不能多也不能少

#
1
2
字典
a,b = "1":"a","2":"b"
print(a)
print(b)
#
1
2
dic = "1":"a","2":"b"
for k,v in dic.items():
    print(k,v)

#1 a
2 b       循环获取字典中的每一个键和值

字典的嵌套

通过键一步一步查询

dic = 1001:["周杰伦","林俊杰"],
       1002:"汪峰":"前妻1":["大烧饼"],"前妻2":["熊大","熊二"],"国际章":"肉丝",
       1003:"陈冠希":["阿娇","阿萨","张柏芝"],
       1004:"韦小宝":["教主夫人":["教主"],
                    "阿珂":"刺客",
                    "双儿":"天地会",
                    "爱心觉罗建宁":"公主",
                    "独臂神尼":"韦小宝师父":"兰陵王":"隐身","花木兰":[
                           "唧唧复唧唧","木兰是战士","爸爸":["花和尚"]]
                             ,
                    "陈圆圆":"丈母娘","穆建平":"小郡主"],
       1005:"常鑫":["大黑哥","大烧饼","吃大煎饼","肉夹馍","自行车","井盖",]
       

print(dic[1005]["常鑫"][-1])
print(dic[1002]["汪峰"]["前妻2"][-1])
print(dic[1004]["韦小宝"][4]["独臂神尼"]["韦小宝师父"]["兰陵王"])
print(dic[1004]["韦小宝"][4]["独臂神尼"]["花木兰"][2]["爸爸"][0])


#
井盖
熊二
隐身
花和尚

以上是关于字典的增删查改的主要内容,如果未能解决你的问题,请参考以下文章

数据库表增删查改帮助类

mybatis从入门到精通 增删查改

增删查改的实现

实现基本的增删查改功能

dbflow 批量 增删查改

string类的增删查改实现