Python-基本数据类型二(dict、set)

目录

一.字典

1.dict

2.字典的创建

3.字典的相关操作

1)增删改查

(1) 通过键值对直接添加:

(2) setdefault():

(1) pop():

(2) popitem():

(3) del():

(4) clear(): 

(1) 键值对更改:

(2) update():

查 

(1) get():

2)其它操作

3)for循环

4)字典的嵌套

二.集合

1.set

2.集合的创建

3.集合的常用操作

1)增删改查

(1) 增:

(2) 删:  

(3) 改:

(4) 查: 

2)其它操作

​ 


一.字典

1.dict

  • 不可变(可哈希)的数据类型:int,str,bool,tuple。
  • 可变(不可哈希)的数据类型:list,dict,set。
  • 字典是Python中的映射类型,它以{}括起来,里面的内容是以键值对的形式储存的:

        Key: 不可变(可哈希)的数据类型.并且键是唯一的,不重复的。

        Value:任意数据(int,str,bool,tuple,list,dict,set),包括后面要学的实例对象等。

     在Python3.5版本(包括此版本)之前,字典是无序的。

     在Python3.6版本之后,字典会按照初建字典时的顺序排列(即第一次插入数据的顺序排序)

  • 优点:

        (1)二分查找去查询(2)存储大量关系型数据

  • 缺点:

        内存消耗巨大

2.字典的创建

dict 保存的数据不能进行切片工作,他只能通过key来获取dict中的数据

# 方式1:
dic1 = dict((('one', 1),('two', 2),('three', 3)))
dic2 = dict([('one', 1),('two', 2),('three', 3)])
print(dic1)    #{'one': 1, 'two': 2, 'three': 3}
print(dic2)    #{'one': 1, 'two': 2, 'three': 3}

# 方式2:
dic = dict(one=1,two=2,three=3)
print(dic)    #{'one': 1, 'two': 2, 'three': 3}

# 方式3:
dic = dict({'one': 1, 'two': 2, 'three': 3})
print(dic)    #{'one': 1, 'two': 2, 'three': 3}

# 方式4: 
dic = dict(zip(['one', 'two', 'three'],[1, 2, 3]))
print(dic)    #{'one': 1, 'two': 2, 'three': 3}

# 方式5: 字典推导式
dic = { k: v for k,v in [('one', 1),('two', 2),('three', 3)]}
print(dic)    #{'one': 1, 'two': 2, 'three': 3}

3.字典的相关操作

1)增删改查

(1) 通过键值对直接添加:

#原字典中不存在key值,直接添加
dic = {"zhou":"zhouyuan","QDD":"qingdu0duo"}
dic ["tang"] = "tangzhengwei"   
#{'zhou': 'zhouyuan', 'QDD': 'qingdu0duo', 'tang': 'tangangzhengewi1'}

#如果原字典中Key重复了,会替换掉原来的value
dic = {'zhou': 'zhouyuan', 'QDD': 'qingdu0duo', 'tang': 'tangangzhengewi1'}
dic ["tang"] = "Tangdds" 
print(dic)
#{'zhou': 'zhouyuan', 'QDD': 'qingdu0duo', 'tang': 'Tangdds'}

 

(2) setdefault():

字典中键值对不做任何改变,没有键值对则添加,如果value没有被设置值,则value默认为None

#如果字典中已经包含了key,不再继续保存
dic = {"zhou":"zhouyuan","QDD":"qingdu0duo"}
dic.setdefault("O","OPPO")
dic.setdefault("O","OPPO pro")    
print(dic)    #{'zhou': 'zhouyuan', 'QDD': 'qingdu0duo', 'O': 'OPPO'}

(1) pop():

#删除一个元素,返回这个元素的value值
dic = {"zhou":"zhouyuan","QDD":"qingdu0du"}
print(dic.pop("QDD"))    #qingdu0du

(2) popitem():

随机删除(python3.6对字典进行了排序,默认删除最后一个),有返回值

#随机删除键值对,并将这个键值对返回一个元组类型
dic = {"zhou":"zhouyuan","QDD":"qingdu0du"}
print(dic.popitem())    #('QDD', 'qingdu0du')

(3) del():

#删除的key字典中没有,会报错
dic = {"zhou": "zhouyuan", "QDD": "qingdu0du"}
del dic["zhou"]
print(dic)    #{'QDD': 'qingdu0du'}

(4) clear(): 

#清空字典
dic = {"zhou": "zhouyuan", "QDD": "qingdu0du"}
dic.clear()
print()    #{}

(1) 键值对更改:

#增加
dic = {"qwer":"tyui","1":"shuzi","question":"answer"}
dic ["biu"] = "gun" #{'qwer': 'tyui', '1': 'shuzi', 'question': 'answer', 'biu': 'gun'}


#更改
dic = {"qwer":"tyui","1":"shuzi","question":"answer"}
dic ["qwer"] = "false"    #{'qwer': 'false', '1': 'shuzi', 'question': 'answer'}

(2) update():

#若原字典中存在了key替换,如果不存在添加
dic = {"qwer":"tyui","1":"shuzi","question":"answer"}
dic1 = {"1":"shizijiayi","sun":"sunshai"}
dic.update(dic1)   # 把dic中的内容更新到dic1中  
print(dic)    #{'qwer': 'tyui', '1': 'shizijiayi', 'question': 'answer', 'sun': 'sunshai'}
print(dic1)    #{'1': 'shizijiayi', 'sun': 'sunshai'}
  • 查 

(1) get():

通过key来获取value的值. 如果key不存在返回None.

可以给出一个默认值. 当key不存在的时候返回默认值

#查询,如果key不存在直接报错
dic = {"qwer":"tyui","1":"shuzi","question":"answer"}
print(dic["qwesd"])    #KeyError: 'qwesd'  


dic = {"qwer":"tyui","1":"shuzi","question":"answer"}
print(dic.get("2"))    #None
find = dic.get("2","people")
print(find)    #people

2)其它操作

#拿到键值对
dic = {"dayth":"sunday","think":"year","air":"icecrame"}
print(dic.items())
#dict_items([('dayth', 'sunday'), ('think', 'year'), ('air', 'icecrame')])

dic = {"dayth":"sunday","think":"year","air":"icecrame"}
print(dic.keys())     #拿到所有的key, 返回key的集合. 像是列表但不是列表
for key in dic.keys():     #可以进行迭代循环
    print(key)
print(dic.values())    #拿到所有的values, 返回key的集合. 像是列表. 但是不是列表
for value in dic.values():
    print(value)

3)for循环

dic = {1: 'a', 2:'b', 3:'c'}
for a in dic:   # 直接循环字典.拿到的是key
    print(a)
    print(dic[a])   #拿到a对应的value值

#遍厉字典   
for item in dic.items():    #(此方法过于繁琐)
    print(item[0])    #拿到所有key
    print(item[1])    #拿到所有value


#解构,解包  解构的时候必须数量匹配
a,b = (1,2)
print(a)    #1
print(b)    #2


for k,v in dic.items():    #直接拿到所有的key和value
    print(k,v)   

4)字典的嵌套

dic = {
    "name":"汪峰",
    "age": 58,
    "wife":{
        "name":"国际章",
        "salary": 180000,
        "age": 37
    },
    "children":[
        {"name":"老大", "age": 18},
        {"name":"老二", "age": 118}
    ]
}
print(dic["children"][1]["age"])
print(dic["wife"]['salary'])

二.集合

1.set

set集合中的元素必须是可hash(int, str, tuple,bool)的, 但是set本⾝身是不可hash得. set是可变的

set就是dict类型的数据但是不保存value, 只保存key. set也用{}表示

set中的元素是不重复的, 且无序的,利用这个特性可以使用set去掉重复。

 

2.集合的创建

s = {"wangbadan",123,"qdd","饿了么",123}
print(s)    #{'qdd', 'wangbadan', 123, '饿了么'}

3.集合的常用操作

1)增删改查

(1) 增:

(2) 删:  

(3) 改:

(4) 查: 

2)其它操作

set集合本身是可以发生改变的. 是不可hash的. 我们可以使⽤用frozenset来保存数据.

frozenset是不可变的. 也就是一个可哈希的数据类型 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值