zoukankan      html  css  js  c++  java
  • Python字典处理技巧

    从字典中取值(不想由于搜索的键不存在而异常)

    解决方法:

    使用字典的get方法 (get方法只读取字典的值而不会去修改字典)

    d={'key':'value'}
    print d.get('key','not found')
    print d.get('keys','not found')

    假如键key存在,那么get方法就会返回相应的值,否则,返回第二个参数


    给字典添加一个条目

    解决方法:

    使用字典的setdefault方法,假设正在创建一个由单词到页数的映射,关键的代码为 

    def addword(theIndex, word, pagenumber):
        theIndex.setdefault(word, [ ]).append(pagenumber)

    假设word键存在,setdefault返回的就是key对应的value,否则的话,就新增一个word键,并添加value,这里默认添加的是一个空的列表。

    setdefault方法返回的是value,这里就是一个列表,代表了单词到页数的映射表,之后调用append方法,就可以添加这个页数了。


    将列表元素交替的作为键和值来创建字典

    解决方法:

    使用dict和zip方法分片之后合并 

    def dictFormList(keyAndValues):
        return dict(zip(keyAndValues[::2],keyAndValues[1::2]))

    获取字典的一个子集

    解决方法:

    如果不想改动源字典 

    def sub_dict(somedict, somekeys, default=None):
        return dict([(k, somedict.get(k, default)) for k in somekeys])

    如果想从源字典中删除符合条件的项目 

    def sub_dict(somedict, somekeys, default=None):
        return dict([(k, somedict.pop(k, default)) for k in somekeys])

    反转字典

    解决方法:

    def invert_dict(d):
        return dict([(v,k) for k,v in d.iteritems()])


    用字典分派方法和函数(就是switch语句)

    解决方法:

    同样的,可以使用字典进行操作 

    animals=[]
    number_of_felines=0
    def deal_with_a_cat():
        global number_of_felines
        print "meow"
        animals.append('feline')
        number_of_felines+=1
    def deal_with_a_dog():
        print "bark"
        animals.append('canine')
    def deal_with_a_bear():
        print "watch out for the *HUG*!"
        animals.append('ursine')
    
    tokenDict={
        "cat":deal_with_a_cat,
        "dog":deal_with_a_dog,
        "bear":deal_with_a_bear,
        }
    
    words=["cat","bear","cat","dog"]
    for word in words:
        tokenDict[word]()
    nf=number_of_felines
    print 'we met %d feline%s' % (nf, 's'[nf==1:])
    print 'the animal we met were:',' '.join(animals)

    字典的并集和交集

    解决方法:

    使用fromkeys创建字典,例如 

    a=dict.fromkeys(xrange(1000))
    b=dict.fromkeys(xrange(500,1500))

    最快的计算并集的方法是 

    union=dict(a,**b)

    而最快且最简洁的方法是 

    inter=dict.fromkeys([x for x in a if x in b])


  • 相关阅读:
    3 Redis 的常用五大数据类型
    Oracle12C 基本操作和使用
    CentOS7安装VNC服务
    CentOS7.6 安装Oracle12C(下)
    CentOS7.6 安装Oracle12C(上)
    博主创建了一个AGV吧的Discuz,欢迎各位加入进来
    六、openTCS4.17汉化版源码包含通信DEMO,gitee地址见内容
    毕马威图形数独
    五、OpenTCS4.12的模拟运行
    四、通过Socket实现跟AGV小车通信(仅做Demo演示,跟实际工厂运行无关)
  • 原文地址:https://www.cnblogs.com/riskyer/p/3323126.html
Copyright © 2011-2022 走看看