使用自定义条件进行高级字典过滤
本书的示例说明了使用 items() 函数进行字典过滤,该过程可以简化为效率。
字典理解方法:
Python 为此目的提供了一个强大的工具:字典理解。有了它,您可以在应用自定义条件时根据现有值创建新字典。例如,要过滤点字典:
points = {'a': (3, 4), 'b': (1, 2), 'c': (5, 5), 'd': (3, 3)} points_under_5 = { k: v for k, v in points.items() # Iterate over (key, value) pairs if v[0] < 5 and v[1] < 5 # Filter based on condition }
Python 2 兼容性:
在 Python 2(2.7 及以上版本)中,迭代字典项的语法略有不同:
points_under_5 = { k: v for k, v in points.iteritems() # Use 'iteritems()' instead of 'items()' if v[0] < 5 and v[1] < 5 }
性能注意事项:
与手动迭代方法相比,字典理解方法提供了卓越的性能:
import timeit # Manual iteration manual_time = timeit.timeit( """ points={'a':(3,4), 'b':(1,2), 'c':(5,5), 'd':(3,3)} points_small={} for item in [i for i in points.items() if i[1][0]<5 and i[1][1]<5]: points_small[item[0]]=item[1] """, number=1000000 ) # Dict comprehension dict_time = timeit.timeit( """ points={'a':(3,4), 'b':(1,2), 'c':(5,5), 'd':(3,3)} points_under_5 = {k:v for k, v in points.items() if v[0]<5 and v[1]<5} """, number=1000000 ) print("Manual iteration time:", manual_time) print("Dict comprehension time:", dict_time)
以上是如何在Python中根据自定义条件高效过滤字典?的详细内容。更多信息请关注PHP中文网其他相关文章!