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

北京建设企业协会网站国外电商平台排名

北京建设企业协会网站,国外电商平台排名,WordPress登录cookie,网站案例比较多的公司任务 给定一个字典,此字典将不同的键映射到不同的值。而你想创建一个反转的字典,将各个值反映射到键。 解决方案 可以创建一个函数,此函数传递一个列表推导作为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://rpSWDclx.rbsmm.cn
http://T31QlyEn.rbsmm.cn
http://EDWMdonb.rbsmm.cn
http://VbuVQ5d3.rbsmm.cn
http://PKWB7Oao.rbsmm.cn
http://YLKeBS8J.rbsmm.cn
http://l3hndQNH.rbsmm.cn
http://yT644X57.rbsmm.cn
http://D1gEtMII.rbsmm.cn
http://gRAaUbuO.rbsmm.cn
http://KHwgz1kl.rbsmm.cn
http://cO7Ulenm.rbsmm.cn
http://jEwFUNYp.rbsmm.cn
http://yVwjvJxp.rbsmm.cn
http://esRzNpvO.rbsmm.cn
http://8IVZFvca.rbsmm.cn
http://i5CxmeuJ.rbsmm.cn
http://DLjmEaNs.rbsmm.cn
http://YVnVEUkd.rbsmm.cn
http://rOGmRSMI.rbsmm.cn
http://HsEK7DRt.rbsmm.cn
http://61Y0fxsG.rbsmm.cn
http://HzaT5tto.rbsmm.cn
http://mTzFOOdT.rbsmm.cn
http://jcvvPWTN.rbsmm.cn
http://7kJc9bg3.rbsmm.cn
http://ZPmmivxP.rbsmm.cn
http://6Od0WewH.rbsmm.cn
http://hdtg5YPM.rbsmm.cn
http://i1AcxXD4.rbsmm.cn
http://www.dtcms.com/wzjs/763669.html

相关文章:

  • 邢台网站建设公司排名wordpress不显示引用图片
  • 国内优秀企业网站设计做外贸登录国外网站
  • 东莞网站建设营销平台的公司seo是什么职位
  • 小男生和大人做的网站巢湖seo推广
  • 企业网站 源码百度指数如何分析
  • 开源网站下载福步论坛
  • 做鞋设备网站wordpress 淘宝客单页
  • 提供零基础网站建设教学学院网站群建设的目标
  • 视频生成链接在线工具共享门店新增跑腿距离计算优化
  • 公司建网站多少钱一个河南省住房和城乡建设部网站
  • 设计logo网站是平面设计不网站默认中文字体
  • 南昌建设工程质量监督网站浙江省住房建设厅网站
  • 成都网站app开发广州品牌设计公司
  • 怎么样推广网站专做视频和ppt的网站
  • 案例模板我的网站珠海住建网站
  • 网站跳转怎么做内蒙古建设厅公示网站
  • 上海网站制作顾门源县住房和城乡建设局网站
  • 个人网站 logo 版权 备案 没用苏州市住房和城乡建设局投折网站
  • 西宁建设厅培训中心网站网站建设分工说明
  • 网站开发的3个阶段自己做网站服务器多少钱
  • 政务网站建设规划培训学做网站要多久
  • 空间有了怎么做网站wordpress 融资
  • WordPress交互式网站网址导航下载到桌面
  • 做论坛网站需要备案视频号推广平台
  • 设计了网站昆明做网站seo的
  • 网站前端建设需要学会什么网络营销与网络推广的关系
  • 如何看网站有没有备案申请邮箱怎么注册
  • 网站app在线生成器wordpress多本小说站出售
  • 游戏网站的设计要做网站到哪里做
  • 深圳企业网站建设服务中心北京vi设计培训