字典dict
文法: {鍵1: 值1, 鍵2: 值2, 鍵3: 值3, …, 鍵n: 值n}
不能使用切片
說明:鍵值對: key-value
- 字典和清單類似,都可以用來存儲多個資料
- 在清單中查找某個元素時,是根據下标進行的;字典中找某個元素時,是根據**‘名字’—key**(就是冒号:前面的那個值,例如上面代碼中的’name’、‘id’、‘sex’)
- 字典中的每個元素都由2部分組成,鍵:值。例如 ‘name’:‘班長’ ,'name’為鍵,'班長’為值
- 鍵可以使用數字、布爾值、元組,字元串等不可變資料類型,但是一般習慣使用字元串,切記不能使用清單等可變資料類型
-
每個字典裡的key都是唯一的,如果出現了多個相同的key,後面的value會覆寫之前的value
字典的元素是一個鍵值和value一一對應:key-value
key的三個特點:
1.唯一性
2.是不可變類型,list,dict,set不可用
3.無序
1.字典定義
d = {"name": "劉亦菲", "age": 33}
# d = {0: 1, 2: 3, (1,): 5}
print(d)
# 定義方法
d = dict(name='鹿晗', age=30) # {'name': '鹿晗', 'age': 30}
print(d)
# zip()
d = dict(zip(['name', 'age'], ['鄧超', 45])) # {'name': '鹿晗', 'age': 30}
print(d)
d = dict([('a', 10), ('b', 20), ('c', 30)])
print(d)
2.查詢—根據key指查詢
print(d["name"])
# print(d["sex"]) # 不存在的key會報錯
print(d.get('name'))
print(d.get('sex')) # None,不會報錯
print(d.get('sex', '男')) # 如果sex存在值則取對應的值,否則取預設值'男'
key = "name"
print(d[key])
3.周遊
# 3.周遊
d = {"name": "劉亦菲", "age": 33}
'''
for k in d: # 擷取的是key
print(k, d[k])
for k in d.keys(): # 擷取的是key
print(k, d[k])
'''
'''
for v in d.values(): # 擷取value的值
print(v)
'''
for k, v in d.items(): # 擷取key和value的值
print(k, v)
print(list(d.keys())) # ['name', 'age']
print(list(d.values())) # ['劉亦菲', 33]
print(list(d.items())) # [('name', '劉亦菲'), ('age', 33)]
4.判斷成員
# 成員
print('age' in d) # 判斷keys是在字典中存在
print('age'not in d)
5.添加與修改
# 增加
d = {'name': '黴黴', 'age': 33}
d['sex'] = '女' # 如何沒有這個key會在末尾添加
print(d)
# 改
d['sex'] = 'girl'
print(d)
6.删除
# d.pop('age')
# d.clear() # 清空字典
# d.popitem() # 預設删除最後一個
# print(d)
print()
7.将字典中的key與value交換位置
# 将字典的key和value交換
dict2 = {'a': 5, 'b:': 4, 6: 1}
print(dict2)
dict3 = {n: k for k, n in dict2.items()} # 字典生成式
print(dict3)
可變類型
字典是屬于可變類型,傳遞的是位址,如果不是使用copy() 函數複制指派,而是用 == 指派,那麼指派的兩個字典是共用一個位址,那麼對一個字典的修改,也會導緻另一個字典的值發生改變
d = {"name": "劉亦菲", "age": 33}
print(d) # {"name": "劉亦菲", "age": 33}
d2 = d
d2['name'] = '楊幂'
print(d2) # {'name': '楊幂', 'age': 33}
print(d) # {'name': '楊幂', 'age': 33}
對清單中的字典進行排序
sorted(stu_list, key=lambda n:n['num'])
sorted(stu_list, key=lambda n:n['score'])