Just a quick word about the metatumen (Tuple) and the dictionary (Dict) in Python

  • 2020-05-30 20:27:57
  • OfStack

preface

This article has documented some knowledge of the meta-ancestor (Tuple) and dictionary (Dict) of Python's data types, as well as some of the built-in methods. Without further ado, let's take a look at the details.

Tuples Tuple

Features: data in the meta ancestor is immutable

Definition of 1 element: T = (1,)


>>> T=(1,)
>>> type(T)
<type 'tuple'>

Special progenitors: "variable" progenitors


>>> T=(1,2,3,[1,2,3])
>>> T[3][2] = 'vimiix'
>>> T
(1, 2, 3, [1, 2, 'vimiix'])

It looks like the tuple has changed, but what has changed is that the elements in the [1,2,3] list have changed, but the memory address of the list in the T tuple has not changed.

Conclusion: in fact, the element of the meta-ancestor contains variable elements, but the memory address of the element in the meta-ancestor does not change, so the so-called meta-ancestor immutable refers to the memory address that the element points to is unchanged

The dictionary Dict

Features:

1. The dictionary is the only mapping type of 1 in Python

2. The key of the dictionary (KEY) must be an immutable object -- > Since the dictionary is stored in the computer through the Hash algorithm, the features of Hash are calculated and stored by KEY. If the KEY is variable, the data will be confused.


>>> D = {1:3,'vimiix':88}
>>> type(D)
<type 'dict'>

>>> D={[1,2,3]:100}
Traceback (most recent call last):
 File "<pyshell#15>", line 1, in <module>
 D={[1,2,3]:100}
TypeError: unhashable type: 'list' ( This prompts list Cannot be Hash The calculated data type, because list Is a variable data type )
>>>

As you can see from this error, the keys of the dictionary can only use immutable objects (the meta-ancestor is ok), but there is no requirement for the values of the dictionary

Key-value pairs are separated by a colon ':', each pair is separated by a comma ', ', and all are enclosed in curly braces' {}'

The key value pairs in the dictionary are in no order, so they can not be accessed by the index, only the corresponding values can be obtained by the key

Extension: if the same key appears during the definition process, the last key value pair will be retained when it is finally stored.


>>> D= {1:2,1:3}
>>> D
{1: 3}

Create and access

The first way to create it is to create a key-value pair directly through curly braces

The second way to create it is to take advantage of built-in functions dict() To create, notice! dict() You can have only one argument in parentheses, and you want to enclose all the key-value pairs

(1)


>>> D =dict((1,2),(3,4),(5,6))
Traceback (most recent call last):
 File "<pyshell#20>", line 1, in <module>
 D =dict((1,2),(3,4),(5,6))
TypeError: dict expected at most 1 arguments, got 3
>>> D =dict(((1,2),(3,4),(5,6)))
>>> D
{1: 2, 3: 4, 5: 6}

(2) you can also specify keyword parameters


>>> D=dict(vimiix = 'VIMIIX')
>>> D
{'vimiix': 'VIMIIX'}

The lowercase 'vimiix' here can't be in single quotes, it will give you an error!

(3) the built-in method of dict.fromkeys has two parameters


>>> D = dict.fromkeys((1,'vimiix'),('common','value'))
>>> D
{1: ('common', 'value'), 'vimiix': ('common', 'value')}
>>>

In the actual production process, dictionary generation is used to create, according to the existing data to generate the corresponding data, data is meaningful.

Dictionary generating chestnuts:


>>> L1 = [1,2,3]
>>> L2 = ['a','v','vimiix']
>>> D={a:b for a in L1 for b in L2}
>>> D
{1: 'vimiix', 2: 'vimiix', 3: 'vimiix'}

This is just a generated chestnut, but it is not an ideal answer. How to generate the corresponding key value pairs of 11

Built-in methods for dictionaries:

get() :

Gets the value corresponding to the key, and if None is not found, finds the value corresponding to the return

pop(key) :

The corresponding value of key pops up, and the default is the last one

popitem() :

Randomly returns and removes 1 pair of keys and values (items) from the dictionary. Why random deletion? Because dictionaries are out of order, there is no such thing as a "last term" or any other order. If you need to delete items 1 by 1, use popitem() The method is very efficient.

update() :

Update or add 1 key value pair.


>>> D.update({'newitem':'update'})
>>> D
{'newitem': 'update', 1: 'vimiix', 2: 'vimiix', 3: 'vimiix'}

conclusion


Related articles: