Python2和Python3中字典的keys()、values()、items()方法的区别

发表于 | 阅读次数

区别

Python2字典有三个版本的keys、values、items方法。分别是:

列表版本:keys()values()items()
迭代器版本:iterkeys()itervalues()iteritems()
视图版本:viewkeys()viewvalues()viewitems()

Python3字典只有一个版本的keys、values、items方法。

视图版本:keys()values()items()

其他Python2中的iter系列和view系列方法都不存在。

说明

Python2中列表版本返回的是列表,可以实际存储结果,占用额外内存。

1

2

3

4

5

6

7

8

>>> d = {'A' : 1, 'B' : 2, 'C' : 3}

>>> d.keys()

['A', 'C', 'B']

>>> d.values()

[1, 3, 2]

>>> d.items()

[('A', 1), ('C', 3), ('B', 2)]

>>>

Python2中迭代器版本返回的是迭代器,不占用额外内存,按需生成元素。

1

2

3

4

5

6

7

8

9

10

11

12

>>> d = {'A' : 1, 'B' : 2, 'C' : 3}

>>> d.iterkeys()

<dictionary-keyiterator object at 0x7f12c682e7e0>

>>> list(d.itervalues())

[1, 3, 2]

>>> for k,v in d.iteritems():

... print(k,v)

...

('A', 1)

('C', 3)

('B', 2)

>>>

Python2视图版本返回的是视图对象,作为一个窗口能动态反应字典的变化,当然也可以迭代。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

>>> d = {'A' : 1, 'B' : 2, 'C' : 3}

>>> keys = d.viewkeys()

>>> keys

dict_keys(['A', 'C', 'B'])

>>> d['D'] = 4

>>> keys

dict_keys(['A', 'C', 'B', 'D'])

>>> del d['A']

>>> keys

dict_keys(['C', 'B', 'D'])

>>> d

{'C': 3, 'B': 2, 'D': 4}

>>> list(d.viewvalues())

[3, 2, 4]

>>> for k,v in d.viewitems():

... print(k,v)

...

('C', 3)

('B', 2)

('D', 4)

>>>

Python3字典只有keys()values()items()这一个视图版本,相当于Python2的view系列方法。

大师兄 wechat

欢迎关注我的微信公众号:Python大师兄