天天看點

Python基礎-資料類型之字典

一、字典的定義

字典是用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'}