python学习 Day07 字典元组集合

14 . 字典dict

#字典与列表相似,都是可变序列,但字典是无序的

#有序:意味着有索引值

#字典保存的内容是:键值对形式

键值对特点:键是唯一的,而值可以重复

写法:

  • 字典用花括号

    # -- coding: utf-8 --
    dt = {'id':10,'username':'asdads','pwd':'213213213'}
    print(dt)
    
  • 创建空字典

    dt={}
    print(dt)
    
  • 用映射创建字典

    #两列表创建
    ls1 = [1,2,3]
    ls2 = ['a','b','c']
    print(dict(zip(ls2,ls1)))
    
    #元组和列表创建
    ls1 = [1,2,3]
    tp2 = ('a','b','c')
    print(dict(zip(tp2,ls1)))
    
    #有重复值
    ls1 = (1,2,3,4)
    tp2 = ('a','b','c','b')
    print(dict(zip(tp2,ls1)))
    ##{'a': 1, 'b': 4, 'c': 3}
    
    
  • 通过关键字参数创建(键名不用加引号,键值正常写)

    dt = dict(id=10,username='wsad',pwd='slakdjk12213')
    print(dt)
    ## {'id': 10, 'username': 'wsad', 'pwd': 'slakdjk12213'}
    

  • 字典推导式

    import random
    dt = {i:random.randint(1,100) for i in range(1,11)}
    print(dt)
    
    #扩展:值为随机数值的列表
    dt2 = {i:[x for x in range(random.randint(1,10))] for i in range(10)}
    print(dt2)
    

字典操作

  • 清空字典

    dt = dict(id=10,username='asdds',pwd='123123')
    dt.clear()
    print(dt)
    #{}
    
  • 访问字典

    dt = dict(id=10,username='asdds',pwd='123123')
    print(dt)
    
    print(dt['id'])
    
    ##{'id': 10, 'username': 'asdds', 'pwd': '123123'}
    ##10
    
    print(dt['xx'])		#报错
    print(dt.get('xx')) #不存在则返回None,存在就返回对应的值 ,不会报错,而直接用键就会报错
    
    
  • 增加

    dt = dict(id=10,username='asdds',pwd='123123')
    print(dt)
    dt['age']=20
    print(dt)
    
  • 删除

    dt = dict(id=10,username='asdds',pwd='123123')
    dt.pop('id')
    print(dt)
    #{'username': 'asdds', 'pwd': '123123'}
    
    # del dt['id'] 	#删除键‘id’
    # dict.clear()	#清空字典
    # del 			#删除字典
    
  • 修改

    dt = dict(id=10,username='asdds',pwd='123123')
    dt['id']=12
    print(dt)
    #{'id': 12, 'username': 'asdds', 'pwd': '123123'}
    
    

  • 遍历

    dt = dict(id=10,username='root',pwd='123456',age=20)
    for key in dt:
        print(key,dt[key])
    ##
    #id 10
    #username root
    #pwd 123456
    #age 20
    
    
    for key,value in dt.items():
        print(key,value)
    ##
    #id 10
    #username root
    #pwd 123456
    #age 20
        
        
    for i in dt.items():#以元组形式返回
        print(i)
    ##
    #('id', 10)
    #('username', 'root')
    #('pwd', '123456')
    #('age', 20)  
    
  • dict.keys()

    dt = {'a':1,'b':2,'c':3}
    print(dt.keys())
    #dict_keys(['a', 'b', 'c'])
    
  • dict.values()

    dt = {'a':1,'b':2,'c':3}
    print(dt.values())
    #dict_values([1, 2, 3])
    
  • divt.fromkeys()

    list = ['a','b','c']
    dt1 = {}
    dt1 = dt1.fromkeys(list,0)
    print(dt1)
    
    #dict_values([1, 2, 3])
    


15 集合:

​ 集合是保存不重复的元素:集合主要用途是“去重“

​ 集合不能放列表,字典,集合,只能放元组和基本类型

​ 集合是无序,可变的序列

  • 集合的创建

    #声明方法
    st = {41,2,3,1,8}
    print(st)#无序,去重
    

    注意:集合中存在重复的内容会自动去重

  • 空集合set()

    dt = {} #空字典
    print(type(dt))
    
    st = set()
    print(st)
    
    ##
    #<class 'dict'>
    #<class 'set'>
    
  • 使用set()创建集合

    st = set('hello')
    st2 = set(['hello','python','js'])
    st3 = {(12,3,4,56)}
    print(type(st2))
    print(type(st3))
    ##
    <class 'set'>
    <class 'set'>
    <class 'set'>
    
  • 集合添加

    st = set()
    st.add('hello')
    st.add('world')
    st.add('php')
    #{'world', 'hello', 'php'}
    
  • 集合删除

    st.remove('php')
    print(st)
    #{'world', 'hello'}
    
  • 集合遍历

    st = {'hello','python','js'}
    
    for i in st:
    	print(i)
    #js
    #hello
    #python
    
  • 交集,并集,差集

    交集:&

    并集:|

    差集:-

    st1 = {'php','python','java','go','c','c++'}
    st2 = {'linux','html','js','java','python'}
    print(st1 & st2)
    print(st1 | st2)
    print(st1 - st2)
    print(st2 - st1)
    
    # {'java', 'python'}
    # {'c++', 'js', 'go', 'linux', 'java', 'c', 'python', 'html', 'php'}
    # {'c++', 'php', 'go', 'c'}
    # {'js', 'linux', 'html'}
    
  • 集合更新:

    set.update():方法用于修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。

    #主要是用来添加元素
    st = {1,2,3,4}
    st2 = {7,1,2,4,5}
    st2.update(st)
    print(st2)
    #可以添加一个集合到集合中,add()方法只能添加一个元素
    

    练习题:构造一个字典,以26个大写字母为键,随机数元组,并且找出在全部元组中出现的元素

#用标志方法
import random
dt ={}
for i in range(65,91):
        dt[chr(i)] = tuple(random.randint(9,10) for x in range(random.randint(5,10)))
ls = []
st = set(x for x in dt['A'])
dt1 ={'A':(1,2,3,4),'B':(1,2,5,4)}
for j in st:
    flag =0
    for z in dt:
        if j in dt[z]:
            continue
        else:
            flag=1
            break

    if flag==0:
        ls.append(j)

print(ls)
#2.用交集的方法
import random
dt ={}
for i in range(65,91):
        dt[chr(i)] = tuple(random.randint(9,10) for x in range(random.randint(5,10)))
st =set(dt['A'])
for i in dt:
    st= st&set(dt[i])
print(list(st))
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值