1, Dictionary
Disadvantages of list: 1) a large amount of data can be stored in the list, but the correlation between data is not strong; 2) the query speed of the list is relatively slow
Container data type: dict
Classification by variable and immutable data types:
Immutable (hashable) data types: int, str, bool (Boolean), tuple (tuple).
Variable (non hashable) data types: list, dict, set.
Dictionary: {}, container data type stored as key value pair:
dic = {'Zhang San': #Key value pair {'name': 'Zhang Si', 'age': 18, 'sex': 'male'}, 'catr': #Key value pair ['Daniel', 'Carola', 'overbearing'] } print(dic)
Note:
- Key must be immutable data type: int,str, value can be any data type and object, unique.
- Dictionary before 3.5 (including 3.5) is unordered
- Dictionary 3.6x will be arranged in the order of the first dictionary
- Dictionary 3.7 is orderly.
Disadvantages of Dictionary: space for time
Advantages of Dictionary: very fast query speed, storage of related data
1. Dictionary creation
Method 1:
dic = dict((('one',1),('two',2),('three',3))) print(dic) //Output results: {'one': 1,'two': 2,'three': 3}
Method 2:
dic = dict(one=1, two=2, three=3) print(dic) //Output result: {'one': 1, 'two': 2, 'three': 3}
Method 3:
dic = dict({'one': 1, 'two': 2, 'three': 3}) print(dic) //Output result: {'one': 1, 'two': 2, 'three': 3}
2. Increase
Directly increase by key value pair
dic = {'name': 'mrxiong', 'age': 18} dic['weight'] = 75 # Without weight, increase the key value pair print(dic) # {'name': 'mrxiong', 'age': 18, 'weight': 75} dic['name'] = 'barry' # With the name key, it becomes the dictionary change value print(dic) # {'name': 'barry', 'age': 18, 'weight': 75}
setdefault
dic = {'name':'mrxiong','age':30,} dic.setdefault('heigth',175) # Without height, add print(dic) dic.setdefault('name','barry') # With this key, it will not change print(dic) #It has a return value dic = {'name': 'Taibai', 'age': 18} ret = dic.setdefault('name') print(ret) # Taibai
3. Delete
pop deletes the key value pair of the dictionary through the key. If there is a return value, you can set the return value.
dic = {'name':'mrxiong','age':30,} ret = dic.pop('name') #With return value print(dic)
When we don't know whether there is a key value in the dictionary, we can implement it through pop. If there is no key value, we will not delete the dictionary and return the set parameter prompt
dic = {'name':'mrxiong','age':30,} ret = dic.pop('abcc','No such key') #With return value print(ret) print(dic)
clear() clear
dic = {'name':'mrxiong','age':30,} dic.clear() print(dic)
del
Delete key value pair by key
dic = {'name':'mrxiong','age':30,} del dic['name'] print(dic)
4. Change
Direct change by key value pair
dic = {'name': 'mrxiong', 'age': 30} dic['name'] = 'barry' print(dic) //Output results: {'name': 'barry', 'age': 30}
dic = {'name': 'mrxiong', 'age': 30} dic.update(ses='male',height=175) print(dic) //Output results: {'name': 'mrxiong', 'age': 30, 'ses': 'male', 'height': 175}
dic = {'name': 'mrxiong', 'age': 30} dic.update(name='barry') print(dic) //Output results: {'name': 'barry', 'age': 30}
dic = {'name': 'mrxiong', 'age': 30} dic.update([('one', 1), ('two', 2)]) print(dic) //Output results: {'name': 'mrxiong', 'age': 30, 'one': 1, 'two': 2}
5. Check
get
dic = {'name': 'mrxiong', 'age': 30, 'hobby_list': ['Straight man', 'drive a car', 'play']} v = dic.get('hobby_list') print(v) //Output results: ['straight man', 'driving', 'playing'] dic = {'name': 'mrxiong', 'age': 30, 'hobby_list': ['Straight man', 'drive a car', 'play']} v = dic.get('name') print(v) //Output: mrxiong dic = {'name': 'mrxiong', 'age': 30, 'hobby_list': ['Straight man', 'drive a car', 'play']} v = dic.get('nameone') print(v) //Output result: None dic = {'name': 'mrxiong', 'age': 30, 'hobby_list': ['Straight man', 'drive a car', 'play']} v = dic.get('nameone','No such key') #Return value can be set print(v) //Output result: no such key
6. Three special operations
keys() dic = {'name': 'Taibai', 'age': 18} print(dic.keys()) # dict_keys(['name', 'age']) values() dic = {'name': 'Taibai', 'age': 18} print(dic.values()) # dict_values(['Too white ', 18]) items() dic = {'name': 'Taibai', 'age': 18} print(dic.items()) # dict_items([('name ',' too white '), ('age', 18)])
Exercises:
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
Please add a key value pair in the dictionary, "k4": "v4", output the added dictionary
dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} dic['k4']='v4' print(dic)
dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} dic.setdefault('k4', 'v4') print(dic)
Please output the modified dictionary with the value of "alex" corresponding to "k1" in the modified dictionary
dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} dic['k1']='alex' print(dic)
dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} dic.update(k1='alex') print(dic)
Add an element 44 to the corresponding value of k3 to output the modified dictionary
dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} dic["k3"].append(44) print(dic)
Please change 22 to 'apple' in the value corresponding to k3, and output the modified dictionary
dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} dic['k3'][2] = 'apple' print(dic)
Please insert element 18 at the first position of the value corresponding to k3, and output the modified dictionary
dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} dic['k3'].insert(1, 18) print(dic)
2, Nesting of dictionaries
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
Add an element 44 to the corresponding value of k3 to output the modified dictionary
dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} dic["k3"].append(44) print(dic)
practice:
dic = { 'name': 'Wang Feng', 'age': 48, 'wife': [{'name': 'International chapter', 'age': 38}], 'children': {'girl_first': 'Small apple', 'girl_second': 'Xiaoyi', 'girl_three': 'Zenith'} }
1) get the name of Wang Feng.
name = dic['name'] print(name) #Wang Feng
2] get the dictionary: {'name': 'international chapter', 'age':38}.
l1 = dic['wife'] # Get this list first di = l1[0] # The dictionary is the first element of the list. Therefore, the dictionary is obtained through the index print(di)
Optimization:
l1 = dic['wife'][0] print(l1) #{'name': 'international chapter', 'age': 38}
3) get the name of Wang Feng's wife.
di = dic['wife'][0] # This is the code of the small dictionary obtained from the last question wife_name= di['name'] # You can get the corresponding value through the small dictionary and then through the key print(wife_name)
Optimization:
l3 = dic['wife'][0]['name'] print(l3)
4) get Wang Feng's third child's name.
dic2 = dic['children'] # Get this dictionary first name = dic2['girl_three'] # Get the name of the third child through this dictionary print(name)
Optimization:
l2 = dic['children']['girl_three'] print(l2) #Zenith