• python3:序列_字典(常用基础知识)


    #字典:
    '''
    字典:无序的、可变的序列,也称关联数组,或散列表
    ①格式{键:值}
    ②通过键读取元素
    ③字典是任意对象的无序集合
    ④字典可任意嵌套,如元素可以为列表、字典、列表的列表等
    ⑤字典的键必须是唯一的。不可重复,如果重复了,则已最后的键对应的值为准。
    ⑥字典中的键是不可变的,即键可以添加,不可以修改。
    '''
    
    #字典有很多继承序列的内容如下:
    #序列索引从0开始,从最后起则索引为-1
    
    #空字典
    print('空字典1:',{},"空字典2:",dict())
    
    a = {'4':20,'1':35,'6':30,'5':25}
    c = {'c1键':"c1",'c2键':"c2",'c3键':"c3"}
    b = {'4':'小一','5':'小二','6':'小三'}
    
    aa = {range(1,11,2)}
    print(aa)
    
    print(a['1']) #输出'a1键'对应的值
    
    '''python3中字典合并的几个方法如下。注意,合并的字典中对应的键类型应该一致,
    否则如果键值有的是字符串,有的是数字,则提示:TypeError: keyword arguments must be strings
    '''
    # 字典的合并方法1
    print('字典的合并方法1:',dict(a, **b))
    
    #字典的合并方法2
    ab = a.copy()
    ab.update(b)
    print('字典的合并方法2:',ab)
    
    #字典的合并方法3
    ab =dict()
    ab.update(a)
    ab.update(b)
    print('字典的合并方法3:',ab)
    
    #检查字典成员
    print('小三' in b)  #in 在,not in 不在,结果:False,因为默认检查的是字典的键,而不是值
    print('6' in b)  #in 在,not in 不在,结果:True
    print('小三' in b.values())  #in 在,not in 不在,结果:True(可以用值去判断)
    
    
    #序列长度、最大值、最小值;%d数字替代符,n换行符
    print("序列长度:%d
    序列最大值:%r
    序列最小值:%r" %(len(a),max(a),min(a)))   #默认比较的是键值
    print("序列长度:%d
    序列最大值:%r
    序列最小值:%r" %(len(a),max(a.values()),min(a.values())))   #比较的是字典的值
    print(dict(a))    #序列转为字典
    print(str(a))     #序列转为字符串
    print(sum(a.values()))     #序列元素+
    
    
    # -------------------字典-------------------------
    #除了对元素的顺序和内容不可添加、修改、删除外,字典有很多同列表一样的功能
    #遍历字典
    print('遍历字典每项键方法1:')
    for item in a:
        print(item)
    
    print('遍历字典每项键方法2:')
    for item in a.keys():
        print(item)
    
    print('遍历字典每项值方法:')
    for item in a.values():
        print(item)
    print('遍历字典每项键和值方法:')
    for item in a.items():
        print(item)
    
    #将a分两列输出  笨方法
    print('将a的值分两列输出,笨方法')
    for item in a.items():
        for index in item[0]:
            if int(index)%2 ==0:
                print(item[1],'		',end='')  #	:横向空出一个制表符的位置;end='':接下来输出的内容不要换行显示,即:index 0不换行,1换行,2不换行,3换行
            else:
                print(item[1])
    
    #将a分两列输出  简易方法
    print('将a的值分两列输出,简易方法')
    for index,item in a.items():
        if int(index)%2 ==0:
            print(item,'		',end='')  #	:横向空出一个制表符的位置;end='':接下来输出的内容不要换行显示,即:index 0不换行,1换行,2不换行,3换行
        else:
            print(item)
    
    shuzi = (128,512,309)
    daihao = ['SY','JX','JN']
    jiancheng = ['SY','JX','JN','SP','TX']
    xingzuo = ['双鱼','巨蟹','金牛','水瓶','天蝎']
    
    #创建字典
    di10 = dict.fromkeys(shuzi)   #key为shuzi,value为空的字典
    di11 = dict(zip(shuzi,daihao))   #生成字典
    di12 = dict(zip(jiancheng,xingzuo))    #生成字典,注意,如果想让一个作为key的内容不可为列表,因为列表是可变的,必须为字典等不可变得内容
    #生成字典,注意,如果想让一个序列作为key,那么这个序列不可以是列表,因为列表是可变的,提示错误:TypeError: unhashable type: 'list'
    #di3 = {jiancheng:xingzuo}
    print('di11:',di11)
    print('di12:',di12)
    
    print('返回删除的指定的键',di11.pop(309))
    print('返回删除的随意的键和值的信息',di11.popitem())
    di11.clear()   #清空字典
    print(di11)
    
    print("如果指定的键存在,则返回该键的值,方法1:",di12['JN'])
    print("如果指定的键存在,则返回该键的值,方法1:",di12['SY'] if 'SY' in di12 else "没有这个简称啦~")
    print("如果指定的键存在,则返回该键的值,方法1:",di12['SY'] if 'SY1' in di12 else "没有这个简称啦~")
    print("如果指定的键存在,则返回该键的值,方法2:",di12.get('JX',"哟,您老的记忆力真好,可惜没有啦~"))
    print("如果指定的键存在,则返回该键的值,方法2:",di12.get('JX2',"哟,您老的记忆力真好,可惜没有啦~"))
    
    
    dd1 = dict(zip(shuzi,daihao))   #生成:数字、代号字典
    dd2 = dict(zip(jiancheng,xingzuo)) # 生成:代号、星座字典
    # 返回128对应的代号和星座
    print('128对应的代号是:',dd1.get(128),'
    128对应的星座是:',dd2.get(dd1.get(128)))
    
    dd1[603] = 'M'#添加字典元素
    dd1[309] = 'P'#修改字典元素
    del dd1[309]  #删除字典元素
    print(dd1)
    
    
    #字典推导式:(用列表创建的表达式依然可成功创建,******注意:记得加上dict()******)、、
    
    
    dd11 = {i:j for i,j in zip(shuzi,daihao)}   #用推导式生成
    print(dd11)
    
    
    #生成指定范围的数值字典
    import random
    d = {i:random.randint(11,20)*2 for i in  range(1,7)} #random.randint(30,90)*2:元素表达式,i:针对后面range的循环变量
    print('d:',d)
    
    #生成指定需求的字典,如d的5折
    e = {i:int(x*0.5) for i,x in zip(range(1,len(d)),d)} #x*0.5:元素表达式;x:d中的元素,i的长度为d的长度
    print('e:',e)
    
    #生成符合条件的字典,如f字典需要0.5的d元素,且0.5d元素依然为偶数
    f = {i:int(x*0.5) for i,x in zip(range(1,len(list(int(x*0.5) for x in d))),d) if int(x*0.5)%2==0}
    #x*0.5:元素表达式;x:d中的元素  i的长度为符合条件的列表的长度,也可以写为元组 len(tuple(int(x*0.5) for x in d))
    print('f:',f)
    
    # 创建数字字典
    ff = {range(1,13,3)}
    print(ff)
    
    #二维字典
    #使用推导式创建二维字典(用列表创建的表达式依然可成功创建)
    g ={i:[random.randint(3,8) for j in range(3) ] for i in range(1,4)}
    print(g)
    print(g[1][2])  #key1对应的值中的第2个下标中的值

    结果如下

    C:Users	iansAppDataLocalProgramsPythonPython36python.exe "C:/Users/tians/AppData/Local/Programs/Python/Python36/example-JLL/0322-print&guess number/1027-zidian.py"
    空字典1: {} 空字典2: {}
    {range(1, 11, 2)}
    35
    字典的合并方法1: {'4': '小一', '1': 35, '6': '小三', '5': '小二'}
    字典的合并方法2: {'4': '小一', '1': 35, '6': '小三', '5': '小二'}
    字典的合并方法3: {'4': '小一', '1': 35, '6': '小三', '5': '小二'}
    False
    True
    True
    序列长度:4
    序列最大值:'6'
    序列最小值:'1'
    序列长度:4
    序列最大值:35
    序列最小值:20
    {'4': 20, '1': 35, '6': 30, '5': 25}
    {'4': 20, '1': 35, '6': 30, '5': 25}
    110
    遍历字典每项键方法1:
    4
    1
    6
    5
    遍历字典每项键方法2:
    4
    1
    6
    5
    遍历字典每项值方法:
    20
    35
    30
    25
    遍历字典每项键和值方法:
    ('4', 20)
    ('1', 35)
    ('6', 30)
    ('5', 25)
    将a的值分两列输出,笨方法
    20         35
    30         25
    将a的值分两列输出,简易方法
    20         35
    30         25
    di11: {128: 'SY', 512: 'JX', 309: 'JN'}
    di12: {'SY': '双鱼', 'JX': '巨蟹', 'JN': '金牛', 'SP': '水瓶', 'TX': '天蝎'}
    返回删除的指定的键 JN
    返回删除的随意的键和值的信息 (512, 'JX')
    {}
    如果指定的键存在,则返回该键的值,方法1: 金牛
    如果指定的键存在,则返回该键的值,方法1: 双鱼
    如果指定的键存在,则返回该键的值,方法1: 没有这个简称啦~
    如果指定的键存在,则返回该键的值,方法2: 巨蟹
    如果指定的键存在,则返回该键的值,方法2: 哟,您老的记忆力真好,可惜没有啦~
    128对应的代号是: SY 
    128对应的星座是: 双鱼
    {128: 'SY', 512: 'JX', 603: 'M'}
    {128: 'SY', 512: 'JX', 309: 'JN'}
    d: {1: 28, 2: 34, 3: 28, 4: 32, 5: 28, 6: 36}
    e: {1: 0, 2: 1, 3: 1, 4: 2, 5: 2}
    f: {1: 0, 4: 2, 5: 2}
    {range(1, 13, 3)}
    {1: [3, 7, 6], 2: [3, 3, 8], 3: [4, 7, 3]}
    6
    
    Process finished with exit code 0
  • 相关阅读:
    gojs常用API (中文文档)
    webpack的安装
    win10如何将wps设置成默认应用
    gojs常用API-画布操作
    Access中替代case when的方法 .
    C++ 11 中的右值引用
    形参前的&&啥意思?
    【C语言学习笔记】字符串拼接的3种方法 .
    java项目打jar包
    教你用DrawLayout 实现Android 侧滑菜单
  • 原文地址:https://www.cnblogs.com/jxba/p/9864831.html
Copyright © 2020-2023  润新知