专栏首页python3【笔记3】python中的映射操作

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

采用映射代替条件查找

映射(如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]都有意义

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在python的字符串中输入纯粹的{

        https://docs.python.org/3/library/string.html#formatstrings

    py3study
  • rhcs 3个节点集群测试 小记

                                   节点2  优先级  1 

    py3study
  • 解决「matplotlib 图例中文乱码

    在学习用 matplotlib 画图时遇到了中文显示乱码的问题,在网上找了很多需要修改配置的方法,个人还是喜欢在代码里修改。

    py3study
  • Python实现的快速排序

    今天看了下《算法新解》这本书,很薄的一本书,最开始吸引我的有两点,一个是里面的大量的图,内容相对来说比较清新,第二个是里面的代码是基于Python实现。尽管算法...

    jeanron100
  • SonarQube 安装

    SonarQube(以前叫Sonar)是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量通过插件形式,可以支持包括java,C#...

    用户2146693
  • 【职场】你是真正的大数据“圈内人”吗

    ? 只有搞大数据技术开发的,才是真正“圈内人”?你觉得呢? 笔者曾经参加过若干会议,70%是偏技术的,在场的都是国内各个数据相关项目经理和技术带头人,大家讨论...

    小莹莹
  • 深入浅出理解闭包

    本篇博客转载自@王福朋 王老师的系列文章。系列文章共计18篇,主要涉及js中的两个重难点—-原型和闭包。由于原型部分我在另外一篇博客有介绍,所以这里只集合了他关...

    Chor
  • 朴素贝叶斯算法文本分类原理

    贝叶斯方法把计算“具有某特征的条件下属于某类”的概率转换成需要计算“属于某类的条件下具有某特征”的概率,属于有监督学习。

    codecraft
  • Association, Composition and Aggregation in UI5, CRM, S/4HANA and C4C

    比如UI5的转盘控件Carousel: 一旦转盘被析构,里面显示的page当然也没有继续存在的意义了,需要跟着被析构。

    Jerry Wang
  • Java学习day06--多态,抽象,接口,匿名内部类

    2018.6.9 1.多态 多态是同一个行为具有多个不同表现形式或形态的能力。 多态就是同一个接口,使用不同的实例而执行不同操作。 ...

    曼路

扫码关注云+社区

领取腾讯云代金券