咨询Python中prices.keys()与tech_names间&运算符的工作原理
解释
prices.keys() & tech_names的工作原理 这段代码里的&是集合交集运算符,要理解它的作用,拆成两部分看就清楚了:
1. prices.keys()的本质
在Python 3中,字典的keys()方法返回的不是列表,而是dict_keys对象——这是字典键的动态视图,它具备集合的核心特性:元素唯一、可哈希,并且支持所有集合操作(交集、并集、差集等)。
放到你的例子里,prices.keys()就等价于一个包含所有字典键的类集合结构:{'ACME', 'AAPL', 'IBM', 'HPQ', 'FB'}。
2. &运算符的作用
&在这里执行交集运算,会找出两个操作数中共同存在的元素。你的代码里tech_names是标准集合{'AAPL', 'IBM', 'HPQ', 'MSFT'},它和prices.keys()做交集后,得到的结果是两者共有的键:{'AAPL', 'IBM', 'HPQ'}。
3. 最终效果
字典推导式{key: prices[key] for key in ...}会遍历这个交集结果,把对应的键值对提取出来生成新字典p2,最终p2的内容是:
{'AAPL': 612.78, 'IBM': 205.55, 'HPQ': 37.20}
额外优势
这种写法比先把keys()转成列表再循环判断(比如[key for key in prices if key in tech_names])效率更高——集合的交集操作基于哈希表实现O(1)查找,而列表的in判断是O(n)遍历,数据量越大,性能差距越明显。
内容的提问来源于stack exchange,提问作者Xiaokuan Wei
相关产品推荐
相关产品推荐

