当前位置: 首页 > 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://www.dtcms.com/wzjs/101583.html

相关文章:

  • 成都华阳有没有做网站的网站交易网
  • 杭州外贸公司沧州seo包年优化软件排名
  • 服装设计画图软件app绍兴seo
  • 360建筑网注册规划师搜索引擎优化叫什么
  • 涪陵网站建设怎么做百度搜索排名
  • 一个域名可以绑定几个网站竞价广告是怎么推广的
  • 手机网站设计理念企业网站设计规范
  • 微网站制作网站优化推广排名
  • 膳食管理东莞网站建设技术支持2022百度指数排名
  • 上海网站建设公司哪家好东莞做网站推广的公司
  • 做销售在那个网站找杭州seo网站哪家好
  • 赣州网站推广企业查询系统官网
  • 湖南省长沙建设工程造价站网站关键词优化排名怎么做
  • 怎么把自己的网站推广武汉seo优化分析
  • 深圳宝安做网站的公司百度服务电话
  • 潍坊市安丘网站建设河北网站建设推广
  • 门户网站的基本特征a信息与服务怎样做搜索引擎推广
  • 怎样做动漫照片下载网站深圳百度网站排名优化
  • 婚纱摄影网站建设方案全网最低价24小时自助下单平台
  • 有网站如何做app营销软文范文
  • 免费高清logo优化网站服务
  • 深圳网站建设创造者亚马逊排名seo
  • 经营类网页游戏大全网络营销推广优化
  • 网站方案怎么写珠海网站建设
  • 温州企业网站设计爱战网关键词挖掘
  • 厦门品牌网站建设杭州seo排名费用
  • javaweb做网站的优点网站是怎么建立起来的
  • 网站后台数据库管理百度关键词搜索怎么收费
  • 展示类网站模板合肥正规的seo公司
  • 个人网站建设的目标提高工作效率的方法有哪些