当前位置:网站首页>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
边栏推荐
- leetcode 24. 两两交换链表中的节点
- 模拟卷Leetcode【普通】1296. 划分数组为连续数字的集合
- Win10 cannot operate (delete, cut) files
- Past and present lives of QR code and sorting out six test points
- Construction and integration of Zipkin and sleuth for call chain monitoring
- Engineering organisms containing artificial metalloenzymes perform unnatural biosynthesis
- Office-DOC加载宏-上线CS
- Py06 字典 映射 字典嵌套 键不存在测试 键排序
- Oscp raven2 target penetration process
- 翻译影视剧字幕,这些特点务必要了解
猜你喜欢
如何将flv文件转为mp4文件?一个简单的解决办法
E - food chain
Manage configuration using Nacos
Thesis abstract translation, multilingual pure human translation
[Tera term] black cat takes you to learn TTL script -- serial port automation skill in embedded development
Redis 核心技术与实战之 基本架构:一个键值数据库包含什么?
Apple has open source, but what about it?
Cobalt strike feature modification
Remember the implementation of a relatively complex addition, deletion and modification function based on jeecg-boot
基于JEECG-BOOT的list页面的地址栏参数传递
随机推荐
Simulation volume leetcode [general] 1414 The minimum number of Fibonacci numbers with a sum of K
删除外部表源数据
E - food chain
Difference between backtracking and recursion
[Tera term] black cat takes you to learn TTL script -- serial port automation skill in embedded development
翻译公司证件盖章的价格是多少
字幕翻译中翻英一分钟多少钱?
G - Supermarket
Left matching principle of joint index
MySQL5.72.msi安装失败
基於JEECG-BOOT的list頁面的地址欄參數傳遞
Wish Dragon Boat Festival is happy
Delete the variables added to watch1 in keil MDK
Luogu p2089 roast chicken
Financial German translation, a professional translation company in Beijing
Transfert des paramètres de la barre d'adresse de la page de liste basée sur jeecg - boot
如何做好互联网金融的英语翻译
leetcode 24. 两两交换链表中的节点
论文摘要翻译,多语言纯人工翻译
Black cat takes you to learn EMMC Protocol Part 10: EMMC read and write operation details (read & write)