当前位置:网站首页>Py06 dictionary mapping dictionary nested key does not exist test key sorting
Py06 dictionary mapping dictionary nested key does not exist test key sorting
2022-07-06 06:32:00 【River boats listen to the flute in the rain at night】
F1 Dictionaries
1. A dictionary is not a sequence , It's a kind of mapping , A map is also a collection of other objects , But it stores objects through key value pairs rather than relative positions .
2. There is no reliable left to right order in dictionaries , Instead, map keys to values , Form key value pairs .
3. The dictionary is Python The only mapping type among the core data types , With variability .
4. Just like a list , It can be increased or decreased according to the demand .
5. Sets are divided into ordered sets such as lists , Unordered sets are like dictionaries , Easy to remember keys are more suitable when elements in a set are named or marked .
S2 Mapping operations
1. When a dictionary is written literally , Written in braces , And it contains a series of “ key : value ” Yes , Associate keys with values .
2. The dictionary index is the same as the sequence , But the key in square brackets is not the relative position Also note the string ,
>>>A={' Weigong Shiro ':'saber',' Jiantongying ':'rider',' Elia ':'berserker'}
>>>A={' Weigong Shiro ':'saber',' Jiantongying ':'rider',' Elia ':'berserker','time':4}
>>>A[ Elia ]
>>>A[' Elia ']
'berserker'
>>>A['time']+1
5
>>>A
{' Weigong Shiro ': 'saber', ' Jiantongying ': 'rider', ' Elia ': 'berserker', 'time': 4}
>>>A['time']+=1
>>>A
{' Weigong Shiro ': 'saber', ' Jiantongying ': 'rider', ' Elia ': 'berserker', 'time': 5}
+=x The operation is equivalent to A['']=A['']+x , In situ assignment operation proves its variability
It's just A['']+x, Both terms in the formula are invariant
3. Although you can use the literal form of the braces above to build a dictionary , In addition, the new key assignment will create the key , This is contrary to the prohibition of list assignment outside the boundary , Dictionaries allow you to create key value pairs in this way .
>>>A
{' Weigong Shiro ': 'saber', ' Jiantongying ': 'rider', ' Elia ': 'berserker', 'time': 5, ' Wei Gong Chesi ': 'saber'}
4. Dictionaries can be used instead of search operations , Index by using keys , yes Python The fastest way to write a search in ,
5. Another way to create a dictionary , Through to the dict Key value parameter pairs are passed in the type name ( A grammar ), Or pass the sequence of keys and values at run time zip Pair to create a dictionary ( There are four ways to create a dictionary Literal 、 New key assignment 、dict、 dict+zip)
>>>A=dict( Weigong Shiro ='saber', Jiantongying ='rider', Elia = 'berserker')
>>>A
{' Weigong Shiro ': 'saber', ' Jiantongying ': 'rider', ' Elia ': 'berserker'}
>>>A=dict(zip([' Weigong Shiro ',' Jiantongying ',' Elia '],['saber','rider','berserker']))
>>>A
{' Weigong Shiro ': 'saber', ' Jiantongying ': 'rider', ' Elia ': 'berserker'}
Pay attention to dict when The key has no quotation marks , There is no longer a colon in the middle, but an equal sign , Use dict+zip Temporal grammar dict(zip([ list 1],[ List two ])), Because the list is ordered when it is created , So the two lists before and after will correspond to each other and form a key , The first is the key , Value after .
6. A dictionary is essentially an unordered set of key value pairs .
T3 Revisit nested
1. So called key value pair , Values can correspond to more types Such as a dictionary list Numbers etc.
data={'name':{' surname ':' Small ',' name ':' bright '},'job':[' The host ','IT'],'age':40}
>>>data
{'name': {' surname ': ' Small ', ' name ': ' bright '}, 'job': [' The host ', 'IT'], 'age': 40}
ad locum , Used again on the top Three key dictionary ( The keys are “name” “job” and “age” ), however The value is more complex : A nested dictionary acts as name Value , And use a nested list to make by job Value
>>>data['name'][' name ']
' bright '
>>>data['job'][-1]
'IT'
>>>type(data['job'])
<class 'list'>
>>>data['job'].append(' Teachers' ')
>>>data['job']
[' The host ', 'IT', ' Teachers' ']
>>>data
{'name': {' surname ': ' Small ', ' name ': ' bright '}, 'job': [' The host ', 'IT', ' Teachers' '], 'age': 40}
because job A list is a part of a dictionary Separate memory , It is free to increase or decrease , After learning the following dynamic types, we can regard the key reference as a special variable , A variable has no type but a pointer ( I'll talk about it later ).
2. You can see Python The spirit of core data types activity , Embedded Sets allow complex information structures to be built directly and easily , All this It's automatic One The line expression creates The whole nested object structure .
3.
The underlying language
When we no longer need this object
You must carefully free up all object space
Python in , When the object is referenced for the last time ( for example Assign this variable with other values ), This object Occupied by The memory space of will be cleaned up automatically ( Related to the reference counting section ( I'll talk about it later ))
4.
>>>data
{'name': {' surname ': ' Small ', ' name ': ' bright '}, 'job': [' The host ', 'IT', ' Teachers' '], 'age': 40}
>>>data=0
At this time, we restate ,data Variables change from the original dictionary to numbers 0, Previous dictionary objects will be python The garbage collection mechanism automatically cleans up , In fact, immutable types are generally not cleaned up immediately , It's similar to putting it in a special queue for reuse .
F4 Keys that don't exist :if test
1. The dictionary only supports passing Key access object
Although we can pass Assign a value to the new key to expand the dictionary , Accessing a nonexistent key value is still an error
When we write programs, we don't always know what keys currently exist . under these circumstances
One trick is to test before that
Dictionary in Relational expressions allow us to query dictionaries Whether a key exists in
And can pass through Python Of if Statement to branch the query results
>>>data={'name': {' surname ': ' Small ', ' name ': ' bright '}, 'job': [' The host ', 'IT', ' Teachers' '], 'age': 40}
' Xiaohong 'in data
False
>>>if 'name'in data:
...print(data['name'])
{' surname ': ' Small ', ' name ': ' bright '}
If you have more than one action in a statement block to perform
You just need to indent them the same
It can not only enhance the readability of the code , It can also reduce what you want Characters entered
2.
except in test
There are many other ways to avoid getting nonexistent keys in the dictionary we create
get Method
as well as if/else Ternary expression ( In essence, it is a crowded line if sentence )
>>>x=data.get('i',0)
>>>x
0
>>>y=data.get('name',0)
>>>y
{' surname ': ' Small ', ' name ': ' bright '}
>>>z=data['name']if'name'in data else 0
>>>z
{' surname ': ' Small ', ' name ': ' bright '}
This one at the back if Is the sentence similar to the postpositive attribute in English
F5 Key ordering :for loop
1. Because the word Classics are not sequences
They don't contain any reliable left to right order
Print it out , Its keys may be in a different order than they were entered appear
2. If I'm in a dictionary element We really need to emphasize some order
The solution is through Dictionary keys Method to collect a list of keys
Use List sort Method to sort
And then use Python Of for Cycle through the results one by one
x=list(data.keys())
x
['name', 'job', 'age']
for y in x:
print(data[y])
{' surname ': ' Small ', ' name ': ' bright '}
[' The host ', 'IT', ' Teachers' ']
40
Used list() after , We created a list with only keys , The left and right relative order of the list is fixed , It's also variable , We can change it to the order we need , Then output the corresponding value according to this key sequence
Our example The actual effect is In the order of ordered keys , Print the keys and values of this dictionary, which itself is unordered .
3.for loop It's not just sequence operations , They are iterative operations
边栏推荐
- MFC on the conversion and display of long string unsigned char and CString
- 字幕翻译中翻英一分钟多少钱?
- 模拟卷Leetcode【普通】1414. 和为 K 的最少斐波那契数字数目
- [web security] nodejs prototype chain pollution analysis
- 商标翻译有什么特点,如何翻译?
- 翻译生物医学说明书,英译中怎样效果佳
- Avtiviti创建表时报错:Error getting a new connection. Cause: org.apache.commons.dbcp.SQLNestedException
- Luogu p2089 roast chicken
- Grouping convolution and DW convolution, residuals and inverted residuals, bottleneck and linearbottleneck
- Aike AI frontier promotion (2.13)
猜你喜欢
字幕翻译中翻英一分钟多少钱?
Modify the list page on the basis of jeecg boot code generation (combined with customized components)
CS通过(CDN+证书)powershell上线详细版
How much is the price for the seal of the certificate
F - true liars (category and search set +dp)
翻译公司证件盖章的价格是多少
Postman core function analysis - parameterization and test report
Tms320c665x + Xilinx artix7 DSP + FPGA high speed core board
Lecture 8: 1602 LCD (Guo Tianxiang)
利用快捷方式-LNK-上线CS
随机推荐
[web security] nodejs prototype chain pollution analysis
CS-证书指纹修改
A 27-year-old without a diploma, wants to work hard on self-study programming, and has the opportunity to become a programmer?
Thesis abstract translation, multilingual pure human translation
Today's summer solstice
Use shortcut LNK online CS
JDBC requset corresponding content and function introduction
Apple has open source, but what about it?
Database isolation level
Selenium source code read through · 9 | desiredcapabilities class analysis
Black cat takes you to learn UFS protocol Chapter 4: detailed explanation of UFS protocol stack
在JEECG-boot代码生成的基础上修改list页面(结合自定义的组件)
Error getting a new connection Cause: org. apache. commons. dbcp. SQLNestedException
leetcode 24. Exchange the nodes in the linked list in pairs
Simulation volume leetcode [general] 1405 Longest happy string
mysql按照首字母排序
红蓝对抗之流量加密(Openssl加密传输、MSF流量加密、CS修改profile进行流量加密)
F - true liars (category and search set +dp)
Black cat takes you to learn UFS protocol Chapter 18: how UFS configures logical units (Lu Management)
Testing of web interface elements