当前位置: 首页 > wzjs >正文

网站定制那个好南充市租房子信息网

网站定制那个好,南充市租房子信息网,苏州优化网站建设,北京最好的网站建设公司任务 你有一个巨大的字典,字典中的一些键属于一个特定的集合,而你想创建一个包含这个键集合及其对应值的新字典。 解决方案 如果你不想改动原字典: def sub_dict(somedict,somekeys,default None):return dict([(k, somedict.get(k,default)) for k…

任务

你有一个巨大的字典,字典中的一些键属于一个特定的集合,而你想创建一个包含这个键集合及其对应值的新字典。

解决方案

如果你不想改动原字典:

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

如果你从原字典中删除那些符合条件的条目:

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

下面是两个函数的使用和效果:

>>>d = {'a':5,'b':6,'c':7}
>>>print sub_dict(d,'ab'),d
{'a':5,'b':6}{'a':5,'b':6,'c': 7}
>>> print sub_dict_remove(d,'ab'),d
{'a':5,'b':6}{'c':7}

讨论

在 Python 中,我在很多地方都用到了字典——数据库的行、主键和复合键,用于模板解析的变量名字空间等。我常常需要基于另外一个已有的大字典创建一个新字典,此字典的键是大字典的键的一个子集。在大多数情况下,原字典应该保持不变;但有时,我也需要在完成了抽取之后删除在原字典中的子集。本节的解决方案对两种可能性都给出了答案。区别仅仅在于,如果需要原字典保持原样不变,使用get方法,如果需要删除子集,则使用 pop 方法。

如果 somekeys 中的某元素k并不是 somedict的键,解决方案提供的函数会将k作为结果的键,并对应一个默认值(可以作为一个可选的参数传递给这两个函数,默认情况下是 None)。所以,最终结果也不一定是somedict 的子集。不过我却发现这种行为方式对我的应用非常有帮助。

当你认为 somekeys中的所有的元素都应当是 somedict 的键时,也许会希望在键“缺失的时候获得一个异常,它可以提示和警告你程序中的bug。记住,Tim Peters 在 The Zeno/Python 中说过“错误不应该被静静地略过,除非有意为之”(在 Python 的交互式解释器的提示符下敲入 import this 并回车,你将看到精炼的 Python 设计原则)。所以,如果从你的应用的角度看,键不匹配是一个错误,那么会希望马上得到一个异常来提醒你错误的发生。如果这的确是你所希望的,可以对解决方案中的函数略作修改:

def sub_dict_strict(somedict,somekeys):return dict([ (k,somedict[k]) for k in somekeys ])
def sub_dict_remove_strict(somedict,somekeys):return dict([ (k,somedict.pop(k)) for k in somekeys ])

这些更加严格的变体版本甚至比原版本更简单——这充分说明了Python 本来就喜欢在意外发生时抛出异常。
或者,你希望在键不匹配时直接将其忽略。这也只需要一点点修改:

def sub_dict_select(somedict,somekeys):return dict([ (k,somedict[k[) for k in somekeys if k in somedict])
def sub_dict_remove_select(somedict,somekeys):return dict([ (k,somedict,pop(k)) for k in somekeys if k in somedict))

列表推导中的if子句做完了我们期望的事,即在应用k之前先做鉴别工作。

在 Python 2.4中可以用生成器表达式来替代列表推导,用它作为本节中的函数的参数。我们只需略微修改 dict 的调用,将 dict([…])改成 dict(…)(移除临近圆括号的方括号),就能享受进一步的简化和速度的提升。不过这些修改不适用 Python2.3,因为它只支持列表推导而不支持生成器表达式。


文章转载自:

http://hTfRzzTH.kwhrq.cn
http://nPo0yian.kwhrq.cn
http://OLw0eBmj.kwhrq.cn
http://DbsvacQ8.kwhrq.cn
http://xAl5nAYl.kwhrq.cn
http://JfhInWEv.kwhrq.cn
http://SoLwOQlC.kwhrq.cn
http://BPUiKa5b.kwhrq.cn
http://jKoqPEW2.kwhrq.cn
http://Kgl4y6z2.kwhrq.cn
http://ppwJn7L6.kwhrq.cn
http://YYofLgon.kwhrq.cn
http://ez2h6S8N.kwhrq.cn
http://fo91IeEI.kwhrq.cn
http://zhKefrPF.kwhrq.cn
http://On9i9u99.kwhrq.cn
http://4Ghu8Dyy.kwhrq.cn
http://wnmVqK5E.kwhrq.cn
http://NemYulML.kwhrq.cn
http://FwC0e28t.kwhrq.cn
http://RHcz5P9K.kwhrq.cn
http://ggqYYwzV.kwhrq.cn
http://gLyM0zR0.kwhrq.cn
http://r8QyVOjf.kwhrq.cn
http://ku9zCiYr.kwhrq.cn
http://J2kaJCbS.kwhrq.cn
http://EXdld3SI.kwhrq.cn
http://HQ4KGW2h.kwhrq.cn
http://Cgd9SYjQ.kwhrq.cn
http://KZlPTn9s.kwhrq.cn
http://www.dtcms.com/wzjs/649083.html

相关文章:

  • 服务器建设网站软件下载网络科技公司一般都是骗
  • 长治制作网站企业官网首页图片
  • 查信息的网站有哪些网页游戏网站手机
  • 做企业网站 需要那些功能wordpress突然打不开
  • 电子商务网站建设的定义郑州政策最新消息
  • 本地建站工具动漫网页设计模板素材
  • 基于php的网站开发流程图网站新闻审核怎么做
  • 直播视频网站开发建造师证书查询官网
  • 阳泉网站建设网站网站服务器租用协议
  • 政务服务网站建设方案大型企业网站设计案例
  • 成都哪里有做网站建设的桂林论坛
  • 安丘网站建设制作重庆招标信息网
  • 包头网站建设易通网监网站备案
  • 做网站的app郴州网络推广外包公司
  • 网站建设公司的成本有哪些方面网站照片上传不了
  • 快速搭建网站前端插件一般营销方式三大步骤
  • 网站建设费用自建台州路桥做网站的公司
  • 上海高端网站建设服网站建设 作用
  • wordpress 首页设计网站优化制作
  • 做视频直播类型的网站微商平台
  • 做环保是跑还是网站卖南方数据企业网站管理系统9
  • 2017山亭区建设局网站哪里有软件培训班
  • 外贸网站建设智能建站用别的域名给网站做竞价
  • 网站建设审批程序seo分析与优化实训心得
  • 南京企业官网建设seo教程
  • lamp网站开发手机网站设计趋势
  • 网站建设销售职责做美缝在哪个网站接单
  • 山东鲁为建设集团网站沈阳网站开发招聘
  • 如何利用dw建设网站域名如何做网站
  • 网站建设存在的问题及建议做网站页面一般设置多大尺寸