07 基本数据类型及内置方法(字典、集合)

一、字典

1.定义:在{}内用逗号分隔开多个元素,每一个元素都是key:value的形式,其中value可以是任意类型,而key则必须是不可变类型。

info={"name":"tony","age":18,"sex":"male"}   或info=dict(name="tony",age=18,"sex"="male")

2.类型转换

    (1)info=dict([["name","tony"],("age",18)])===>info={"name":"tony","age":18}

    (2){}.formkeys((“name”,"age","sex"),None) ====>{"age":None,"age":None,"sex":None}

3.使用

3.1优先掌握的操作

1.按key存取值
 (1)取
   dic={"name":"egon",
          "age":18,
          "hobbies"=["play","basketball"]} 
   dic["name"]   ====>"egon"
   dic["hobbies"][0]======>"play"2)对于赋值操作,如果key原先不存在于字典,则会新增
     dic["gender"]="male"
     print(dic)====>dic={"name":"egon", "age":18, "hobbies"=["play","basketball"],"gender":"male"} 
   (3)对于赋值操作,如果key原先存在于字典,则会修改对应value的值
   dic["name"]="tony"
 =====>  dic={"name":"tony",
                     "age":18,
                     "hobbies"=["play","basketball"]} 
2.长度:len(dic)====>3
3.成员运算:in 和 not in      "name" in dic====>True
4.删除:
  dic.pop("name")   #通过指定字典的key来删除字典的键值对
   dic={
          "age":18,
          "hobbies"=["play","basketball"]} 
5.keys:values,键值对items()
   dic={"name":"egon",
          "age":18,
          "hobbies"=["play","basketball"]} 
 (1)获取字典所有的key:dic.keys()
   (2)获取字典所有的value:dic.values
   (3)获取字典所有的键值对:dic.items()

6.循环
  (1)默认遍历的是字典的key
    for key in dic:
        print(key)=====>"name"
                                "age"
                                "hobbies"                                                                                                                                                          
  (2)只遍历key:
    for key in dic.keys():
        print(key)
  (3)只遍历value:
    for key in dic.values():
        print(key)
  (4)遍历value和key:
     for key in dic.items():
         print(items)

3.2需要掌握的操作

1.get()
  (1)key存在,则获取key的值
  dic={"k1":"egon","k2":"tom","k3":"jack"}
  dic.get("k1")====>"egon"
  (2)key不存在,不会报错而是默认返回None
   res=dic.get("xxx")  
   print(res)=====>None
  (3)key不存在,可以设置默认的返回值
    res=dic.get("xxx",666) 
    print(res)=====>666
 ps:字典取值建议使用get方法
2.pop():
  dic={"k1":"egon","k2":"tom","k3":"jack"}
  v=dic.pop("k2“)   #删除指定的key对应的键值对,并返回值
  print(dic)===》dic={"k1":"egon","k3":"jack"}
  print(v)====》"tom"
3.popitem()
dic={"k1":"egon","k2":"tom","k3":"jack"}
item=dic.popitem()   #随机删除一组键值对,并将删除的键值放到元组内返回
print(dic)====>dic={"k2":"tom","k3":"jack"}
print(item)=====>item={"k1":"egon"}
4.update():
 用新字典更新旧字典,有则修改,无则添加
>>> dic= {'k1':'jason','k2':'Tony','k3':'JY'}
>>> dic.update({'k1':'JN','k4':'xxx'})
>>> dic
{'k1': 'JN', 'k3': 'JY', 'k2': 'Tony', 'k4': 'xxx'}
5.fromkeys()
dic=dict.fromkeys(["k1","k2","k3'],[])
print(dic)=====>{'k1': [], 'k2': [], 'k3': []}
6.setdefault()
 (1)key不存在,则新增键值对,并将新增的value返回
   dic={"k1"111,"k2":222}
   res=dic.setdefalut("k3",333)
   print(res)=====>333
   print(dic)======>{"k1"111,"k2":222,"k3":333}
 (2)key存在则不做任何修改,并返回已存在可以对应的value值
   dic={"k1"111,"k2":222}
   res=dic.setdefault("k1",666)
   print(res)====>111
   print(dic)====>{"k1"111,"k2":222}
  

 

二、集合

1.作用:集合、list、tuple、dict一样都可以存放多个值,但是集合主要用于:去重、关系运算

2.定义:在{}内用逗号分割开多个元素,集合具备一下三个特点:

 (1) 每个元素必须是不可变类型

  (2)集合内没有重复的元素

  (3)集合内元素无序

3.类型转换:但凡能够被for循环遍历的数据类型(强调:遍历出的每一个值都必须为不可变类型都可以传给set()转换成集合类型

4.使用

(1)关系运算

friends1 = {"zero","kevin","jason","egon"} # 用户1的好友们 
friends2 = {"Jy","ricky","jason","egon"}   # 用户2的好友们
1.合集/并集:friends1|friens2  #求两个用户所有的好友(重复好友只留一个)
print(friends1.union(friends2))
2.交集:friends1&friens2 #两个用户的共同好友
print(friends1.intersection(friends2))
3.差集:friends1-friens2 #求用户1独有的好友
print(friends1.difference(friends2))
friends2-friens1 #求用户2独有的好友
print(friends1.difference(friends2))
4.对称差集:friends1^friends2
print(friends1.symmetric.differnce(friends2))
5.值是否相等:friends1 == friends2====>False 6.父子集:s1={1,2,3} print(s1.issuperset(s2)) s2={1,2} print(s2.issubset(s1)) s1>s2 包含则返回True,不包含则返回False.相等时互为父子。

 

(2)去重:

         1. 只能针对不可变类型 

   2. 集合本身是无序的,去重之后无法保留原来的顺序

 

针对不可变类型,并且保证顺序则需要我们自己写代码实现,例如
l=[
    {'name':'lili','age':18,'sex':'male'},
    {'name':'jack','age':73,'sex':'male'},
    {'name':'tom','age':20,'sex':'female'},
    {'name':'lili','age':18,'sex':'male'},
    {'name':'lili','age':18,'sex':'male'},
]

new_l=[]

for dic in l:
    if dic not in new_l:
        new_l.append(dic)

print(new_l)

 

(3)其他操作

1.长度
  s={1,2,3}
  print(len(s))====>3
2.成员运算    
  print(c in s )    ======>true
3.循环
  for item in s:
      print(item)====>c
                      a     
                      b

案例

"""
一.关系运算
  有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
  pythons={'jason','egon','kevin','ricky','gangdan','biubiu'}
  linuxs={'kermit','tony','gangdan'}
  1. 求出即报名python又报名linux课程的学员名字集合
  2. 求出所有报名的学生名字集合
  3. 求出只报名python课程的学员名字
  4. 求出没有同时这两门课程的学员名字集合
"""
# 求出即报名python又报名linux课程的学员名字集合
>>> pythons & linuxs
# 求出所有报名的学生名字集合
>>> pythons | linuxs
# 求出只报名python课程的学员名字
>>> pythons - linuxs
# 求出没有同时这两门课程的学员名字集合
>>> pythons ^ linuxs

 

posted @ 2021-08-03 16:54  甜甜de微笑  阅读(60)  评论(0)    收藏  举报