zoukankan      html  css  js  c++  java
  • python字典构造函数dict(mapping)解析

    Python字典的构造函数有三个,dict()、dict(**args)、dict(mapping),当中第一个、第二个构造函数比較好理解也比較easy使用,

    而dict(mapping)这个构造函数的使用比較难理解。

    1 dict()构造函数能够返回一个空的字典

    In [7]: d = dict()
    
    In [8]: print d
    {}
    
    In [9]: 
    

    2 dict(**arg)构造函数,传入參数用赋值表达式,可多个赋值表达式。用逗号间隔就可以。

    In [9]: d = dict(a = 12, b = 13, c = 15)
    
    In [10]: print d
    {'a': 12, 'c': 15, 'b': 13}
    
    In [11]: 
    

    3 dict(mapping)构造python字典构造函数。怎么传入这个mapping參数呢?Python下的mapping究竟是什么呢?

    看下边这个样例。

    def fmap(a, b): 
            return (a, b)
    lik = range(1, 9) 
    liv = list("abcdefgh")
    print map(fmap, lik, liv) 

    执行结果例如以下

    [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e'), (6, 'f'), (7, 'g'), (8, 'h')]
    

           map函数的作用是:每次从可迭代对象(这里是列表lik和liv)取出一个元素值。经过fmap自己定义函数的处理后作为新的(返回)列表的元素,故这个map函数的操作方式非常像列表解析的概念。

           理解了map函数后,便可将返回值作为dict的传入參数了,从而得到一个字典。

    def fmap(a, b):
            return (a, b)
    lik = range(1, 11)
    liv = list("abcdefghij")
    lim = map(fmap, lik, liv)
    d = dict(lim)
    print d
    

          运行结果例如以下所看到的:

    {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e', 6: 'f', 7: 'g', 8: 'h', 9: 'i', 10: 'j'}
    


    以上通过map函数实现的方式,Python提供了还有一个函数zip。也可构造出一个mapping对象,代码例如以下所看到的:

    In [77]: k = list("abcdefghij")
    In [78]: print k
    ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
    In [79]: v = range(11, 21)
    In [80]: print v
    [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
    In [81]: m = zip(k,v)
    In [82]: print m
    [('a', 11), ('b', 12), ('c', 13), ('d', 14), ('e', 15), ('f', 16), ('g', 17), ('h', 18), ('i', 19), ('j', 20)]
    In [83]: d = dict(m)
    In [84]: print d
    {'a': 11, 'c': 13, 'b': 12, 'e': 15, 'd': 14, 'g': 17, 'f': 16, 'i': 19, 'h': 18, 'j': 20}


  • 相关阅读:
    Oracle RAC asm常用命令
    Oracle10g RAC关闭及启动步骤
    工具系列 | git checkout 可替换命令 git switch 和 git restore
    工具系列 | 博客签名
    工具系列 | Token认证方式之JWT【转载】
    PHP系列 | ThinkPHP5.1 如何自动加载第三方SDK(非composer包 )
    工具系列 | 虚拟化VMware ESXi 6.7服务器安装配置
    安全系列 | 【阿里云】安全告警处理-进程异常行为-访问恶意下载源
    其他系列 | Github 贡献统计异常的处理
    MySQL系列 | 安装 MySQL 5.7 on Ubuntu 16.04 | 18.04
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6791665.html
Copyright © 2011-2022 走看看