【笔记3】python中的映射操作

发布时间:2019-09-15 10:01:09编辑:auto阅读(2002)

    采用映射代替条件查找

    映射(如dict等)的搜索速度远快于条件语句(如if等),采用映射替代条件查找可以提高代码效率,目前Python中只有一种标准映射类型,就是字典(dict),但是列表也可以做出这种效果,总结了两种方法。

    1.dict

    dic = {
        '1':'32',
        '2':'31',
        '3':'432',
        '4':'467',
        '5':['fa','faa'],
        '6':('f','fa','asdfa'),
        ('7','8','9'):'f'
    }
    test = '6'
    print(dic.items()) 
    for a,b in dic.items():
        if test in a:
            print(b)

    items()方法用于返回字典dict的(key,value)元组对的列表
    取出对应的结果:

    • dict_items([(1, ‘32’), (2, ‘31’), (3, ‘432’), (4, ‘467’), (5, [‘fa’, ‘faa’]), (6, (‘f’, ‘fa’, ‘asdfa’)), ((7, 8, 9), ‘f’)])
    • (‘f’,’fa’,’asdfa’)

    2. list

    listdic = [
        ['',['','']]
        ['fruit',['apple','orange','123']]
        ['',['']]
        ...
    ]
    for i in range(9):
        type, name = listdic[i]

    本质是高维列表,可以通过listdic[][]来访问,比如:

    • listdict[1] = [‘fruit’,[‘apple’,’orange’,’123’]]
    • listdict[1][0] = fruit
    • listdict[1][1] = [‘apple’,’orange’,’123’]
    • listdict[1][1][2] = 123
    • listdict[1][1][2][0] = 1

    可以通过赋值,将对应的头尾取出来:

    • listdict[1] = [‘fruit’,[‘apple’,’orange’,’123’]]
    • type, name = listdic[1]
    • type = fruit
    • name = [‘apple’,’orange’,’123’]

    ps 字典的不同表示

    
    dic = {
        '1':'32',
        '2':'31',
        '3':'432'
    
    }
    dic1 = {
        1:'32',
        2:'31',
        3:'432'
    }
    dic2 = {
        1:2,
        2:3,
        3:4
    }

    注意key和value是否是字符串,比如迭代或判断的时候,不能直接用int:

    if test in key # 是字符串判断,当key是数字不能直接用这种方法判断
    for i in range(len(key)) # int在迭代要用索引,str\list\tuple可以直接迭代序列元素
    int型的key可以直接取值,dic1[1],dic2[1]都有意义

关键字