一、字典的定義
字典是用key:value的形式來存儲資料的,其中key可以對value有描述性的功能。
key:為不可變類型的資料類型,一般使用字元串類型,key是唯一的,不可重複
value:不限制,所有資料類型都可以
不可變類型有:字元串、數字、元組、集合
可變類型有:清單、字典
1:直接定義
person = {"name":"kitty", "age":13, "sex":"女"}
print(type(person), person) # <class 'dict'> {'name': 'kitty', 'age': 13, 'sex': '女'}
2:通過dict()函數定義
item = [("name","kitty"), ("age",13), ("sex","女")]
person = dict(item)
print(type(person), person) # <class 'dict'> {'name': 'kitty', 'age': 13, 'sex': '女'}
3:dict()函數通過關鍵字參數定義
person = dict(name="kitty", age=13, sex="女")
print(type(person), person) # <class 'dict'> {'name': 'kitty', 'age': 13, 'sex': '女'}
二、字典的使用
1:通過字典中的key,擷取對應的value值
person = {"name":"kitty", "age":13, "sex":"女"}
print(person["name"]) # kitty
print(person["age"]) # 13
print(person["sex"]) # 女
2:通過key,修改value值
2.1:key存在,并且有對應的value值
person = {"name":"kitty", "age":13, "sex":"女"}
person["name"] = "Json"
print(person, person["name"]) # {'name': 'Json', 'age': 13, 'sex': '女'} Json
2.2:key不存在,會在字典中添加一個key,并指派為value
person = {"name":"kitty", "age":13, "sex":"女"}
person["height"] = 165
print(person) # {'name': 'kitty', 'age': 13, 'sex': '女', 'height': 165}
2.3:當字典中有相同的key,對應的value不同時,已最後一個key對應的value值為準
person = {"name":"kitty", "age":13, "sex":"女", "name":"Json"}
print(person) # {'name': 'Json', 'age': 13, 'sex': '女'}
3:擷取字典的長度len()
len(dict)
傳回值為:字典的鍵值對個數
person = {"name":"kitty", "age":13, "sex":"女"}
print(len(person)) # 3
4:删除del:指定了key,删除對應的鍵值對,未指定key,則删除整個字典
person = {"name":"kitty", "age":13, "sex":"女"}
del person["sex"]
print(person) # {'name': 'kitty', 'age': 13}
del person # 删除整個字典
print(person) # 報錯,删除字典後字典不存在了(NameError: name 'person' is not defined)
5:判斷鍵(key)是否存在字典中,使用成員運算符(in / not in)
person = {"name":"kitty", "age":13, "sex":"女"}
print("name" in person) # True
print("kitty" in person) # False
6:使用字典格式化字元串,元素類型必須與鍵對應的值的類型一緻,否則報錯。
person = {"name":"kitty", "age":13, "sex":"女"}
str1 = "你好,我是%(name)s,今年%(age)d歲,性别:%(sex)s" %person
print(str1) # 你好,我是kitty,今年13歲,性别:女
str2 = f"你好,我是{person['name']},今年{person['age']}歲,性别:{person['sex']}"
print(str2) # 你好,我是kitty,今年13歲,性别:女
7:clear():清除字典中的所有項,傳回None
dict.clear()
傳回值為:None,改變了原字典
person = {"name":"kitty", "age":13, "sex":"女"}
result = person.clear()
print(result) # None
print(person) # {}
8:pop():擷取對應鍵的值,并删除這對鍵值對
dict.pop(key) # key:表示字典中的鍵
傳回值為:删除的鍵對應的value值,修改了原字典
person = {"name":"kitty", "age":13, "sex":"女"}
# 指定key,并且key存在
result = person.pop("sex")
print(result, person) # 女 {'name': 'kitty', 'age': 13}
# 指定key,但key不存在
result1 = person.pop('height')
print(result1, person) # 報錯,KeyError: 'height'
9:popitem():擷取最後一個鍵值對,并删除這對鍵值對
dict.popitem()
傳回值為:以元組的形式傳回删除的鍵值對,修改了原字典
person = {"name":"kitty", "age":13, "sex":"女"}
result = person.popitem()
print(result) # ('sex', '女')
print(person) # {'name': 'kitty', 'age': 13}
10:get():擷取key對應的value值,如果不存在則傳回None
dict.get(key) # key表示要查詢的鍵
傳回值為:key存在,對應的value值;key不存在,傳回None
person = {"name":"kitty", "age":13, "sex":"女"}
result = person.get("name")
print(result) # kitty
result1 = person.get("height")
print(result1) # None
11:keys():将字典中的鍵以清單的形式傳回dict_keys類型的資料,可對其直接進行循環周遊
dict.keys()
傳回值為:由key組成的一個新清單,不修改原字典。
person = {"name":"kitty", "age":13, "sex":"女"}
result = person.keys()
print(result) # dict_keys(['name', 'age', 'sex'])
print(list(result)) # ['name', 'age', 'sex']
12:values():将字典中的值以清單的形式傳回dict_value類型的資料
dict.values()
傳回值為:由value組成的一個新清單,不修改原字典。
person = {"name":"kitty", "age":13, "sex":"女"}
result = person.values()
print(result) # dict_values(['kitty', 13, '女'])
print(list(result)) # ['kitty', 13, '女']
13:items(),将字典中所有的鍵值對,以清單的形式傳回dict_items類型的資料,清單中的每一項都是元組形式的鍵值對。
dict.items()
傳回值為:元組形式的鍵值對組成的一個新清單,不修改原字典
person = {"name":"kitty", "age":13, "sex":"女"}
result = person.items()
print(result) # dict_items([('name', 'kitty'), ('age', 13), ('sex', '女')])
print(list(result)) # [('name', 'kitty'), ('age', 13), ('sex', '女')]
14:update():利用一個字典更新另外一個字典,被更新的字典會加到原字典中。如果key相同,會覆寫原字典中key對應的value值。
dict.update(dict)
傳回值為:None,修改了原清單
person = {"name":"kitty", "age":13, "sex":"女"}
person1 = {"name":"Json", "height":165}
result = person.update(person1)
print(result) # None
print(person) # {'name': 'Json', 'age': 13, 'sex': '女', 'height': 165}
print(person1) # {'name': 'Json', 'height': 165}
15:setdefalut():查找key對應的value值,類似于get(),但如果key不在字典中時,可以添加key,并進行指派。
dict.setdefalut(key, value)
傳回值為:key存在,傳回對應的value值;key不存在,傳回添加key後的value值
person = {"name":"kitty", "age":13, "sex":"女"}
# key存在
result = person.setdefault("name")
print(result) # kitty
print(person) # {'name': 'kitty', 'age': 13, 'sex': '女'}
# key不存在,給了具體的value值
result1 = person.setdefault("height", 165)
print(result1) # 165
print(person) # {'name': 'kitty', 'age': 13, 'sex': '女', 'height': 165}
# key不存在,沒給具體的值
result2 = person.setdefault("weight")
print(result2) # None
print(person) # {'name': 'kitty', 'age': 13, 'sex': '女', 'height': 165, 'weight': None}
# key存在,并給了值
result3 = person.setdefault("name", "Json")
print(result3) # kitty
print(person) # {'name': 'kitty', 'age': 13, 'sex': '女', 'height': 165, 'weight': None}
16:fromkey():建立一個新字典,使用給定的鍵建立新的值,每個鍵預設對應的值是None。
dict.fromkey(seq, value)
# seq:字典鍵值清單
# value:可選參數, 設定鍵序列(seq)對應的值,預設為 None
傳回值為:使用新鍵生成一個新字典,不修改原字典
person = {"sex":"女"}
result = person.fromkeys(["name", "age"])
print(result) # {'name': None, 'age': None}
print(person) # {"sex":"女"}
result1 = person.fromkeys(["name", "age"], "aaa")
print(result1) # {'name': 'aaa', 'age': 'aaa'}