上一篇文章: Python实用技法第15篇:筛选序列中的元素
下一篇文章: Python实用技法第17篇:将名称映射到序列的元素中
咱们想建立一个字典,其自己是另外一个字典的子集。
利用字典推导式可轻松解决。segmentfault
prices={ 'a':1.1, 'b':2.2, 'c':3.3, 'd':4.4, 'e':5.5 } p1={key:value for key ,value in prices.items() if value>3} print(p1) names={'a','b'} p2={key:value for key,value in prices.items() if key in names} print(p2)
结果:函数
{'c': 3.3, 'd': 4.4, 'e': 5.5} {'a': 1.1, 'b': 2.2}
大部分能够用字典推导式解决的问题也能够经过建立元组序列而后将它们传给dict()函数来完成,例如:测试
#结果为:{'c': 3.3, 'd': 4.4, 'e': 5.5} p3=dict((key,value) for key,value in prices.items() if value>3)
但在字典推导式的方案更加清晰,并且实际运行起来也快不少。(第一种效率会快将近2倍)code
有时候会有多种方法来完成同一件时间。例如,第二个例子还能够重写成:get
#结果为:{'b': 2.2, 'a': 1.1} p4={key:prices[key] for key in prices.keys() & names}
可是,测试代表这种解决方案几乎要比第一种慢1.6倍。所以,当出现多种方案解决同一问题时,能够稍稍测试一下来研究所花费的时间。it
上一篇文章: Python实用技法第15篇:筛选序列中的元素
下一篇文章: Python实用技法第17篇:将名称映射到序列的元素中