


This article mainly introduces the usage of the dictionary items() series of functions in Python. It is a very practical function. Friends who need it can refer to it.
The example of this article describes the usage of the dictionary items() series of functions in Python. Usage, has a good reference value for Python programming. The specific analysis is as follows:
Let’s look at an example first:
import html # available only in Python 3.x def make_elements(name, value, **attrs): keyvals = [' %s="%s"' % item for item in attrs.items()] attr_str = ''.join(keyvals) element = '<{name}{attrs}>{value}</{name}>'.format( name = name, attrs = attr_str, value = html.escape(value)) return element make_elements('item', 'Albatross', size='large', quantity=6) make_elements('p', '<spam>')
The function of this program is very simple, it is to generate HTML tags. Note that the html module can only be used in Python 3 .x only exists.
At first I just noticed that the dictionary type variables of the keyvals that generate the tag attributeslist are very interesting. Two %s correspond to one item, so just After checking the relevant information, I found out a lot of things, which I will summarize here.
Note: For the versions used by all Python interpreters below, 2.x corresponds to 2.7.3, and 3.x corresponds to 3.4.1
In Python 2.x, items in the official documentation The method is explained as follows: generate a list of (key, value) pairs, like the following:
>>> d = {'size': 'large', 'quantity': 6} >>> d.items() [('quantity', 6), ('size', 'large')]
In the process of searching, I accidentally saw such a question on stackoverflow: What is the difference between dict.items() and dict.iteritems()? , the first answer roughly means this:
"At first, items() returned a list containing all the elements of dict like the above, but because this was too wasteful of memory, I later added ( Note: The group of functions iteritems(), iterkeys(), and itervalues() that began to appear in Python 2.2 are used to return an iterator to save memory, but in 3.x items() itself returns such an iterator. Therefore, the behavior of items() in 3.x is consistent with the behavior of iteritems() in 2.x, and the iteritems() function is abolished.”
But it’s more interesting. Yes, although this answer was accepted, the comments below pointed out that this statement is not accurate. The behavior of items() in 3.x is different from iteritems() in 2.x. It actually returns a " full sequence-protocol object", this object can reflect changes in dict. Later, another function viewitems() was added to Python 2.7 and this behavior in 3.x To be consistent
To confirm the claims in the comments, I did the following test, paying attention to the Python version used in the test:
Test 1 (Python 2.7.3):
Python 2.7.3 (default, Feb 27 2014, 19:58:35) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> d = {'size': 'large', 'quantity': 6} >>> il = d.items() >>> it = d.iteritems() >>> vi = d.viewitems() >>> il [('quantity', 6), ('size', 'large')] >>> it <dictionary-itemiterator object at 0x7fe555159f18> >>> vi dict_items([('quantity', 6), ('size', 'large')])
Test 2 (Python 3.4.1):
Python 3.4.1 (default, Aug 12 2014, 16:43:01) [GCC 4.9.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> d = {'size': 'large', 'quantity': 6} >>> il = d.items() >>> it = d.iteritems() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'dict' object has no attribute 'iteritems' >>> vi = d.viewitems() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'dict' object has no attribute 'viewitems' >>> il dict_items([('size', 'large'), ('quantity', 6)])
You can see that in Python 3.x, the two methods iteritems() and viewitems() have been abolished, and the result of item() is Consistent with viewitems() in 2.x.
2.x The content returned by iteritems() and viewitems() can be traversed using for. As shown below
>>> for k, v in it: ... print k, v ... quantity 6 size large >>> for k, v in vi: ... print k, v ... quantity 6 size large
What is the difference between the two? viewitems() returns the view object, which can reflect changes in the dictionary. For example, in the above example, if you add a key-value combination to d before using the two variables it and vi, the difference will be easy to see. .
>>> it = d.iteritems() >>> vi = d.viewitems() >>> d['newkey'] = 'newvalue' >>> d {'newkey': 'newvalue', 'quantity': 6, 'size': 'large'} >>> vi dict_items([('newkey', 'newvalue'), ('quantity', 6), ('size', 'large')]) >>> it <dictionary-itemiterator object at 0x7f50ab898f70> >>> for k, v in vi: ... print k, v ... newkey newvalue quantity 6 size large >>> for k, v in it: ... print k, v ... Traceback (most recent call last): File "<stdin>", line 1, in <module> RuntimeError: dictionary changed size during iteration
In the third line, we inserted a new element into d, vi can continue to traverse, and the new traversal can reflect the changes in d, but when traversing it, an error message appears in dictionary The size changed during traversal and the traversal failed.
To summarize, in 2.x, the items() method was originally used, but because it was too wasteful of memory, the iteritems() method was added to return an iterator. In 3.x, the items() method was added. The behavior of () was modified to return a view object, so that the object returned can also reflect changes in the original dictionary. At the same time, the backward compatibility feature of viewitems() was added in 2.7.
So in 3.x there is no need to worry about the differences between the three, because only one items() method is retained.
I believe that the examples described in this article have certain reference value for everyone's Python programming.
【Related Recommendations】
1. Special Recommendation: "php Programmer Toolbox" V0.1 version download
3. Basic introduction to Python items() method
4. Instance of item() function in Python traversing dictionary
5. Introducing three methods of accessing dictionary
6. The difference between iteriitems and items in sorted
The above is the detailed content of Detailed explanation of the usage of items() series functions in Python. For more information, please follow other related articles on the PHP Chinese website!

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

SublimeText3 English version
Recommended: Win version, supports code prompts!

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools
