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

抖音网站建设如何编辑网站后台

抖音网站建设,如何编辑网站后台,企业网站建设 邮箱,WordPress安全社区任务 给定一个字典,此字典将不同的键映射到不同的值。而你想创建一个反转的字典,将各个值反映射到键。 解决方案 可以创建一个函数,此函数传递一个列表推导作为dict的参数以创建需要的字典。 def invert_dict(d):return dict([(v,k) for …

任务

给定一个字典,此字典将不同的键映射到不同的值。而你想创建一个反转的字典,将各个值反映射到键。

解决方案

可以创建一个函数,此函数传递一个列表推导作为dict的参数以创建需要的字典。

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

对于比较大的字典,用 Python 标准库 itertools 模块提供的 izip 会更快一些:

from itertools import izip
def invert_dict_fast(d):return dict(izip(d.itervalues(),d.iterkeys()))

讨论

如果字典d中的值不是独一无二的,那么d无法被真正地反转,也就是不存在这样的字典,对于任意给定的键k,满足id[d[k]]==k。不过,本节展示的函数在这种情况下仍然能够创建一个“伪反转”字典 pd,对于任何属于字典d地值 v,d[pd[v]]==v。如果给你原始的字典 d,以及用本节函数获得的字典x,可以很容易地检査x是d的反转字典还是伪反转字典:当且仅当 len(x)==len(d)时,x才是d的真正的反转字典。这是因为,如果两个不同的键对应相同的值,对于解决方案给出的两个函数来说,两个键中的个一定会消失,因而生成的伪反转字典的长度也会比原字典的长度短。在任何情况下只有当d中的值是可哈希(hashable,意味着可以用它们做字典的键)的,前面展示的函数才能正常工作,否则,函数会抛出一个TypeError 异常。

当我们编写 Python程序时,我们通常会“无视小的优化”,正如DonaldKnuth在 30年前所说的“比起速度,我们更珍视清晰和正确性。”不过,了解更多让程序变快的知识也没有害处:当我们为了简单和清晰而采用某种方法编写程序时,我们最好深入地考虑一下我们的决定,不要懵懵懂懂。

在这里,解决方案中的 invent_dict 函数可能会被认为更清晰,因为它清楚地表达了它在做的事。该函数取得了由iteritems方法生成的成对的键及其对应值k和v,将它们包裹成(value,key)的顺序,并把最后生成的序列作为参数赋给 dict,这样 dict 就构建出了一个值成为键,而原先的键变成了对应值的新字典——正是我们需要的反转字典。

而解决方案中 invert_dict_fast 函数其实也没有那么复杂,它的操作更加抽象,它首先将所有的键和值分别转为两个独立的迭代器,再通过调用Python 标准库itertools 模块提供的 izip 将两个迭代器转化为一个迭代器,其中每个元素都是像(value,key)一样的一对值。如果你能够习惯于这种抽象层次,你将体会到更高层次的简洁和清晰。

由于这种高度的抽象性,以及不具化(materialize)整个列表(而是通过生成器和迭代器一次生成一项)的特性,invert_dict_fast能够比invert_dict 快很多。比如,在我的计算机上,反转10000个条目的字典,invertdict耗时63ms,而invert_dict_fast 则仅用时 20ms。速度提升了3倍,颇为可观。当你处理大规模数据时,由于代码的高度抽象性而带来的性能提升将会变得更加明显。特别是当你使用itertools来替换循环和列表推导时,执行速度同样也能获得极大提升,因为你无须在内存中具化一些超大的列表。当你习惯了更高的抽象层次,性能的提升只是一个额外收益,除此之外,你在观念和创造性上也会有所进步。

http://www.dtcms.com/wzjs/595318.html

相关文章:

  • 怎么建设推广网站wordpress添加新的小工具栏
  • 班级网站设计素材html5做网站的好处
  • 优惠券的网站制作做网站的赢利点
  • 网站制作视频教程新手必看平面设计属于哪个专业大类
  • 浙江理工大学网站设计与建设建设网站公司网站
  • 提供网站建设服务的网站价格丰镇网站建设
  • 保定满城网站建设wordpress 个人支付
  • 长治公司网站建设广州做包包的网站好
  • 做个自己的影院网站怎么做成都网站建设公司推荐
  • 做网站可以找设计公司吗扬中网站建设效果
  • 网站空间不支持php宁波做外贸网站建设
  • 都兰县建设局交通局网站衡阳市做淘宝网站建设
  • 网站备案费用多少一站式媒体发稿平台
  • 用人名做网站域名常用的网站开发技术有哪几种
  • 三水 网站建设wordpress 怎么修改
  • 南宁网站建设超薄网络定制版网站建设费用
  • 中国建设银行的官方网站一个空间 多个网站
  • 戴尔网站建设成功的关键WordPress 国内视频
  • 甘肃省住房和城乡建设厅注册中心网站首页制作网站 服务器配置
  • 怎样创建购物网站大数据培训费用多少钱
  • 企业网站定位辽宁省建设工程信息网推荐中项网
  • 在线网站建设诚信经营软件下载网站地址
  • 建设网站中心云建站推荐
  • 网页制作视频的网站建设阜宁做网站公司
  • 做竞价的网站需要做外部链接吗想建立什么网站
  • 济南网站seo哪家公司好如何做app平台
  • 易语言如何做网站登录青岛酒巢网络科技有限公司
  • 网站后台修改导航栏微信优惠券网站怎么做
  • 2015做导航网站有哪些功能吗单位网站建设注意事项
  • 天津建设安全协会网站大同市建设工程招标投标网站