dict.viewkeys()与元组之间的交集行为的差异在2.7.10和2.7.13之间

时间:2017-06-23 15:24:38

标签: python dictionary tuples

因此,在阅读了两个版本Python 2.7.10和Python 2.7.13之间的更改日志之后,没有任何内容突然出现,可以解释以下行为。

Python 2.7.10

Python 2.7.10 (default, Aug  7 2015, 10:34:58) 
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> d = dict(foo='bar', bar='baz', fee='fum', baz='fee')
>>> keys = ('baz', 'bar')
>>> d.viewkeys() & keys
set([])

Python 2.7.13

Python 2.7.13 (default, Dec 17 2016, 23:03:43) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> d = dict(foo='bar', bar='baz', fee='fum', baz='fee')
>>> keys = ('baz', 'bar')
>>> d.viewkeys() & keys
set(['bar', 'baz'])

我想知道是否有人对此行为有解释。

1 个答案:

答案 0 :(得分:1)

我认为What's New in Python 2.7.13中的这段文字概述了这个问题:

  

- 问题#26478:修复了使用字典视图和元组的二元运算符时的语义错误。

有关详细信息,请参阅相关的bug issue 26478previous SO question